gcc无法找到要链接的库

时间:2012-01-13 12:34:44

标签: c++ gcc aptana3

我使用的是Ubuntu,我的IDE是Aptana 3.0

尝试构建时出现以下错误。库libfcgi.a位于/usr/local/lib/

在项目属性的Library 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 个答案:

答案 0 :(得分:3)

我认为这可能是你想要的;

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

-l<值GT;将自动查找所有使用-L列出的文件夹,查找名为lib< value> .a或lib< value> .so的库,您只需要'-lfcgi'。

答案 1 :(得分:0)

尝试使用“-lfcgi”

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

答案 2 :(得分:0)

你的链接器标志是错误的,它需要是-lfcgi,而不是带有“lib”前缀和.a后缀的整个路径。

您可以手动更改,也可以在Apatana中更改。要做到这一点,你不必给他两次完全限定的lib路径。 (你已经给了他搜索路径,记得吗?)。通常您可以像这样定义其他库: cfgi并且您的IDE会完成其余工作以将其添加到链接器标志!

答案 3 :(得分:0)

你应该做

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

但是我建议反对,因为它不灵活。如果问题是安装了另一个不兼容的库版本,最好确保在搜索路径中首先出现正确的版本(或者更好,确保错误的版本不在搜索路径中) - 甚至可以从系统中删除它。)

答案 4 :(得分:0)

这是为了所有人的帮助....真的很感激。

这是解决方案。我不得不使用-lfcgi ++而我添加了

g ++ -L / usr / local / include / -lfcgi ++ -o“rtb”./ src / tb.o

以上是aptanta控制台的输出。我试过-lfcgi而且没用。谷歌搜索导致使用-lfcgi ++。