GCC не может найти библиотеку для ссылки - PullRequest
0 голосов
/ 13 января 2012

Я использую Ubuntu и моя IDE - Aptana 3.0

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

В разделе Свойства проекта библиотеки C ++ Linker я добавил /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

Ответы [ 5 ]

3 голосов
/ 13 января 2012

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

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

-l автоматически найдет во всех папках, перечисленных с -L, библиотеку с именем lib .a или lib .so, все, что вам нужно, это -lfcgi.

0 голосов
/ 14 января 2012

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

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

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

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

0 голосов
/ 13 января 2012

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

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

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

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

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

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 голосов
/ 13 января 2012

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

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

0 голосов
/ 13 января 2012

Попробуйте вместо "-lfcgi"

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