属性/ 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无法找到文件。因为他们在那里?
答案 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',它运行正常。
你应该使用':'来确定要搜索的文件名,并远离没有它的预期的默认文件名格式。希望这可以减轻挫败感。
香酥,