0

好吧,现在我正在尝试在 Linux(Ubuntu 12.04)中使用 boost C++ 库,因为我之前在 Windows 中使用过它们。因此,使用 Boost 网站上的一些示例代码

测试文件.cpp

#include <boost/filesystem/convenience.hpp>
#include <boost/foreach.hpp>
#include <boost/range.hpp>
#include <iostream>

int main(int, char**)
{
    namespace bf = boost::filesystem;
    BOOST_FOREACH(bf::path path,
        boost::make_iterator_range(
            bf::recursive_directory_iterator(bf::path("/home")),
            bf::recursive_directory_iterator())) {
    std::cout << path.string() << std::endl;
}
return 0;
}

应该很容易使用这个命令编译

g++ -L/usr/local/lib -o "testfile" -llibboost_filesystem

我的问题我收到链接器错误

/usr/bin/ld: cannot find -llibboost_filesystem

并且似乎无法弄清楚我错过了什么。请帮忙。

4

1 回答 1

0

按照惯例,库名称lib在大多数 Linux 发行版上都使用前缀。在指示链接器搜索哪些库时,您应该删除此前缀。假设 gnuld链接器,文档说

-l namespec
--library=namespec

   Add the archive or object file specified by namespec to the list of files to 
   link.  This option may be used any number of times.  If namespec is of the 
   form :filename, ld will search the library path for a file called filename, 
   otherwise it will search the library path for a file called libnamespec.a.

所以你要么想要

g++ -L/usr/local/lib -o "testfile" -lboost_filesystem

或者

g++ -L/usr/local/lib -o "testfile" -l :libboost_filesystem.so
于 2013-08-01T16:45:23.777 回答