在eclipse cdt中找不到库文件

时间:2010-06-02 13:30:04

标签: c++ eclipse boost linker

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

在图书馆(-I)下我有 libbost_system libbost_filesystem ... 在图书馆搜索路径(-L)下我有 /家庭/ 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

我尝试过libbost_system.so和libbost_system.a,但是我得到了同样的错误。我做错了什么以及为什么eclipse无法找到文件。因为他们在那里?

4 个答案:

答案 0 :(得分:9)

您不需要名称中的“lib”部分。只需链接

-lboost_system -lboost_filesystem -lboost_regex

答案 1 :(得分:2)

我认为这类似于/usr/bin/ld: cannot find -llibeststring.a

你试过-lboost_system吗? -l选项不会指向前导lib或尾随.a.so

答案 2 :(得分:1)

我知道它有点事后,但您可以尝试-l:libbost_system.so并且它将查找具有该名称的库。

答案 3 :(得分:1)

实际上在经历了很多挫折后,我决定阅读ld的手册页。

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

因为我的特定库是myfoobar.dll的内容,所以直到我意识到我想让ld使用实际的文件名才行。正如其他人发布截图一样,如何将链接库添加到链接器,我需要做的就是将字段中的'myfoobar'更改为':myfoobar.dll',它运行正常。

你应该使用':'来确定要搜索的文件名,并远离没有它的预期的默认文件名格式。希望这可以减轻挫败感。

香酥,