0

我正在使用 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
4

5 回答 5

3

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

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

-l<value> 将自动在 -L 列出的所有文件夹中查找名为 lib<value>.a 或 lib<value>.so 的库,您只需要“-lfcgi”。

于 2012-01-13T12:42:08.907 回答
0

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

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

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

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

于 2012-01-14T04:38:53.307 回答
0

改用“-lfcgi”

g++ -L/usr/local/lib -o"rtb"  ./src/rtb.o   -lfcgi
于 2012-01-13T12:42:00.383 回答
0

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

您可以手动更改它,也可以在 Apatana 中更改它。为此,您不必两次给他完整的库路径。(你已经给了他搜索路径,记得吗?)。通常你会像这样定义额外的库: cfgi你的 IDE 会做剩下的事情来将它添加到链接器标志中!

于 2012-01-13T12:43:22.293 回答
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

但是我建议不要这样做,因为它不灵活。如果问题是安装了另一个不兼容的库版本,最好确保正确的版本位于搜索路径的首位(或者更好的是,确保错误的版本根本不在搜索路径中― 甚至可能通过将其从系统中删除)。

于 2012-01-13T13:12:52.657 回答