在Eclipse CDT中找不到库文件

4

属性/C/C++构建/设置 GCC C++链接器/库

在库(-I)下面,我有: libboost_system libboost_filesystem ... 在库搜索路径(-L)下面,我有: /home/etobkru/boost_1_43_0/boostBinaries/lib

但是当我编译时,我得到了以下错误信息: g++ -L/home/etobkru/boost_1_43_0/boostBinaries/lib/ -o"searchDirs" ./main.o -llibboost_system -llibboost_filesystem -llibboost_regex /usr/lib/gcc/i586-suse-linux/4.1.2/../../../../i586-suse-linux/bin/ld: 无法找到-llibboost_system

我已经尝试使用libboost_system.so和libboost_system.a,但我仍然得到相同的错误。我做错了什么?为什么Eclipse找不到这些文件?因为它们在那里吗?


可能是重复的问题:/usr/bin/ld: cannot find -llibeststring.a - Troubadour
4个回答

9
您不需要在名称中包含“lib”部分。只需链接即可:
-lboost_system -lboost_filesystem -lboost_regex

2

1

实际上,经过很多挫折后,我决定阅读ld的man页面!

l namespec --library=namespec 将由namespec指定的存档文件或对象文件添加到链接文件列表中。此选项可以使用任意次数。如果namespec的形式为:filename,则ld将在库路径中搜索名为filename的文件,否则它将在库路径中搜索名为libnamespec.a的文件。

因为我的特定库大致是myfoobar.dll之类的东西,所以在意识到我想让ld使用实际文件名之前,什么都行不通。正如其他人发布的带有屏幕截图的内容如何将库添加到链接器一样,我所需要做的就是将字段中的'myfoobar'更改为':myfoobar.dll',然后它就可以正常工作了。

您应该使用':'来获取要搜索的文件名的确切名称,并远离默认的文件名格式化(没有':')。希望这可以缓解挫折感。

Krusty,


1

我知道现在有点晚了,但你可以尝试使用-l:libbost_system.so,它会寻找一个确切名称为该名称的库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接