好吧所以现在我正在尝试使用Linux中的boost C ++库(Ubuntu 12.04),因为我之前在Windows中使用它们。所以使用Boost网站上的一些示例代码
testfile.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
似乎无法弄清楚我错过了什么。请帮助。
答案 0 :(得分:0)
按照惯例,库名称在大多数Linux发行版上使用lib
前缀。在指示链接器要搜索哪些库时,应删除此前缀。假设gnu ld
链接器,文档说
-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