yaml-cpp не компілює з g ++ - yaml-cpp

Мені потрібно запустити yaml-cpp, але він просто виграв "t компілювати без помилок. Я" використовую Ubuntu 12.04 та yaml-cpp-0.5.1 від тут, яка була встановлена ​​за допомогою "cmake" та "sudo make install", щоб переконатися, що бібліотеки правильно скопійовані на потрібний шлях "/ usr / local / include / yaml-cpp".

Для тестування я спробував скласти кілька рядків коду

#include "yaml-cpp/yaml.h"
int main(int argc, char **argv) {
YAML::Node config = YAML::Load("[1,2,3]");
return 0;
}

які я в основному отримав з цієї сторінки тут. Якщо я зараз біжу

g++ -o yaml_test yaml_test.cpp

або

g++ -I/usr/local/include -L/usr/local/lib -lyaml-cpp -o yaml_test yaml_test.cpp

Я завжди отримую одне і те ж повідомлення про помилку

/tmp/ccgvKdN2.o: In function `main":
yaml_test.cpp:(.text+0x1d): undefined reference to `YAML::Load(char const*)"

що, наскільки я знаю, означає, що бібліотеки не знайдені.

Що тут відбувається? Чому виграли не просто компілювати?

Відповіді:

0 для відповіді № 1

На основі Вашого коментаря, схоже, yaml-cpp 0.2.7 вже встановлений у вашій системі. У вас є два варіанти:

  1. Видаліть існуючий пакет зі своєї системи. Я не впевнений, як саме aptitude працює, але ви можете спробувати просто видалити файли /usr/local/lib/libyaml-cpp.* і /usr/local/include/yaml-cpp/ а потім встановити yaml-cpp 0.5.1 з нуля. (Зверніть увагу, що у вас, ймовірно, був конфлікт із файлами заголовків, але пощастило, що воно було вирішено належним чином. "Я видалю заголовки 0.2.7, а потім встановіть 0,5.1 свіжих."

  2. Можна встановити 0.5.1 в окреме місце (наприклад, $HOME/lib і $HOME/include), а потім переконайтеся, що ці каталоги були перевірені раніше /usr/local у змінних вашого шляху.

Я, мабуть, оберу варіант №1, оскільки не впевненийчому вам потрібні обидва встановлені. Я вважаю, що можливі деякі інші пакунки, які ваш менеджер пакунків хоче встановити, залежатимуть від yaml-cpp 0.2.7, що може бути проблемою.