2010-06-02 58 views
4

性能/ C/C++编译/设置 GCC C++链接器/库不能找不到库文件

在库(-I)我有 libbost_system libbost_filesystem ... 和下图书馆搜索路径(-L)我有 的/ home/etobkru/boost_1_43_0/boostBinaries/lib目录

但我编译时得到 G ++ -L /家庭/ etobkru/boost_1_43_0/boostBinaries/lib目录/ -o “searchDirs” ./ main.o -llibboost_system -llibboost_filesystem -llibboost_regex /us R/LIB/GCC/i586的-SUSE Linux的/ 4.1.2 /../../../../ i586的-SUSE Linux的/斌/劳工处:找不到-llibboost_system

我有尝试使用libbost_system.so和libbost_system.a但我得到相同的错误。我在做什么错误,为什么不能找到这些文件。因为他们在那里?

+0

可能重复[在/ usr /斌/劳工处:找不到-llibeststring.a(http://stackoverflow.com/questions/2947239/usr-bin-ld-cannot-find- llibeststring-a) – Troubadour 2010-06-02 13:48:37

回答

9

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

-lboost_system -lboost_filesystem -lboost_regex 
+0

谢谢:)作品:) – hidayat 2010-06-02 14:21:55

1

我知道事情有点过了,但是你可以试试-l:libbost_system.so,它会查找一个名称正确的库。

1

其实经过多次挫折,我决定阅读ld的手册页!

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

因为我的特定库是沿着myfoobar.dll的行东西没有工作,直到我意识到我想让ld使用实际的文件名。正如其他人已经用截图张贴如何将库添加到链接器,我所需要做的就是将字段中的'myfoobar'更改为':myfoobar.dll',并且它工作正常。

您应该使用':'来确定文件名的真实位置,以便搜索并远离没有它的默认文件名格式。希望这可以减轻挫折感。

香酥的