Я хочу использовать restbed в моем проекте C ++, и я следую инструкциям, чтобы установить его на мою машину с Ubuntu. Я установил включаемый файл в /usr/local/include
и файл библиотеки в /usr/local/library
,
Проблема в следующем:
@ubuntu:~/test$ g++ test.cpp -o test -lrestbed -std=c++11
/usr/bin/ld: cannot find -lrestbed
collect2: error: ld returned 1 exit status
Это означает, что Ubuntu знает, где находятся мои включаемые файлы, но не знает, где находятся файлы ссылок или файлы ссылок повреждены. И все становится странным, см. Последний раздел.
Я искал много решений для этой проблемы, в том числе этот. Я следую за гильдией и добавил /usr/local/lib
а также /usr/local/library
в /etc/ld.so.conf
так что в основном мой компоновщик знает, где найти файлы ссылок.
@ubuntu:~/test$ cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
/usr/loacl/lib
/usr/local/library
И когда я снова g ++ я потерпел неудачу, то же сообщение об ошибке. Я даже пытался export LD_LIBRARY_PATH="/usr/local/library"
и я тоже побежал sudo ldconfig
но все равно не повезло.
Итак, я обнаружил, что могу скомпилировать его с помощью этой команды:
g++ -L /usr/local/library test.cpp -o test -lrestbed -std=c++11
И все работает как шарм. Так что мои файлы ссылок в порядке, и я в замешательстве … почему система PATH не работает? И как мне это решить? (Я не хочу каждый раз вводить длинный путь, и он становится многословным, когда я использую больше сторонних библиотек).
Моя система:
ubuntu 16.04 LTS
работает на параллельном рабочем столе
g++
(Ubuntu 5.4.0-6ubuntu1 ~ 16.04.4) 5.4.0 20160609
Задача ещё не решена.
Других решений пока нет …