2012-01-13 3 views
0

Я использую Ubuntu и мой IDE является Aptana 3,0НКУ не удается найти библиотеку для ссылки

Я получаю следующее сообщение об ошибке при попытке построить. Библиотека libfcgi.a находится в /usr/local/lib/.

В разделе «Связи с библиотекой C++» свойств проекта я добавил /usr/local/lib/ в путь поиска и файл /usr/local/lib/libfcgi.a.

Почему я все еще не могу построить?

**** Build of configuration Debug for project rtb **** 

make all 
Building target: rtb 
Invoking: GCC C++ Linker 
g++ -L/usr/local/lib -o"rtb" ./src/rtb.o -l/usr/local/lib/libfcgi.a 
/usr/bin/ld: cannot find -l/usr/local/lib/libfcgi.a 
collect2: ld returned 1 exit status 
make: *** [rtb] Error 1 

ответ

0

Try "-lfcgi" вместо

g++ -L/usr/local/lib -o"rtb" ./src/rtb.o -lfcgi 
3

Я думаю, что это может быть то, что вы хотите;

g++ -L/usr/local/lib -o "rtb" ./src/rtb.o -lfcgi 

< -l значение> будет автоматически искать во всех папках, перечисленных с -L для библиотеки имени Lib < значение> .a или Lib < значение> .so, все, что вам нужно, это '-lfcgi'.

+0

Я был бы удивлен, если бы '/ usr/local/lib' еще не был в пути поиска для библиотек – celtschk

+1

На моем mac это не лучше, чем жаль :) –

+0

Скорее всего, это не так. Это тоже, вероятно, это не в ld.conf или LD_LIBRARY_PATH ... –

0

Ваш флаг компоновщика неправильный, он должен быть -lfcgi, а не весь путь с префиксом «lib» и суффиксом .a.

Вы можете изменить его вручную или в Апатане. Для этого вам не нужно давать ему полный путь к вашей библиотеке два раза. (Вы уже дали ему путь поиска, помните?). Обычно вы определяете дополнительные библиотеки так: cfgi и ваша IDE делает остальные, чтобы добавить их в флаги компоновщика!

0

Вы должны сделать

g++ -o "rtb" ./src/rtb.o -lfcgi 

В маловероятном случае, что /usr/local/lib/ является не в пути поиска, вы можете добавить этот путь в командной строке как

g++ -L/usr/local/lib -o "rtb" ./src/rtb.o -lfcgi 

или положить его в переменной окружения LIBRARY_PATH перед вызовом команды компиляции, например с Башем:

if [ -z "$LIBRARY_PATH" ]; 
    then export LIBRARY_PATH=/usr/local/lib; 
    else export LIBRARY_PATH="$LIBRARY_PATH":/usr/local/lib; 
fi 

Если вы настаиваете в предоставлении явного имени файла, опустить -l:

g++ -L/usr/local/lib -o "rtb" ./src/rtb.o /usr/local/lib/libfcgi.a 

Однако я бы посоветовал против этого, потому что это негибкое. Если проблема в том, что существует другая, несовместимая версия установленной библиотеки, лучше убедиться, что правильный путь сначала на пути поиска (или даже лучше, убедитесь, что неправильный не находится в пути поиска вообще - возможно, даже удалив его из системы).

0

Это для всей помощи .... очень ценю это.

Вот решение. Я должен был использовать -lfcgi ++ и я добавил

г ++ -L/USR/местные/включить/-lfcgi ++ -o "РТБ" ./src/rtb.o

Выше был выход из aptanta консоли ,Я попробовал -lfcgi и не работал. Поиск Google приводит к использованию -lfcgi ++.

Смежные вопросы