Мені потрібно запустити 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 вже встановлений у вашій системі. У вас є два варіанти:
Видаліть існуючий пакет зі своєї системи. Я не впевнений, як саме
aptitude
працює, але ви можете спробувати просто видалити файли/usr/local/lib/libyaml-cpp.*
і/usr/local/include/yaml-cpp/
а потім встановити yaml-cpp 0.5.1 з нуля. (Зверніть увагу, що у вас, ймовірно, був конфлікт із файлами заголовків, але пощастило, що воно було вирішено належним чином. "Я видалю заголовки 0.2.7, а потім встановіть 0,5.1 свіжих."Можна встановити 0.5.1 в окреме місце (наприклад,
$HOME/lib
і$HOME/include
), а потім переконайтеся, що ці каталоги були перевірені раніше/usr/local
у змінних вашого шляху.
Я, мабуть, оберу варіант №1, оскільки не впевненийчому вам потрібні обидва встановлені. Я вважаю, що можливі деякі інші пакунки, які ваш менеджер пакунків хоче встановити, залежатимуть від yaml-cpp 0.2.7, що може бути проблемою.