如何在Linux中正确链接boost库

Ath*_*han 8 c++ linker boost

我一直试图通过Boost教程,但我一直困在链接文件系统库.

我有Ubuntu 12.10.安装并不那么难

sudo apt-get install libboost-all-dev
Run Code Online (Sandbox Code Playgroud)

这将所有头文件放在/ usr/local/include和编译源中/ usr/lib/
[--headers]
[--binaries]

我写了这个程序[--program].当我试图编译它

 g++ -g tut1.cpp -o tut1 -lboost_system -lboost_filesystem
Run Code Online (Sandbox Code Playgroud)

得到了这个错误:[ - error].
http://www.boost.org/doc/libs/1_53_0/more/getting_started/unix-variants.html 上进行了一些搜索后,
我尝试了这个:

g++ -g -I /usr/local/include/boost/ tut1.cpp -o tut1 -L /usr/lib/libboost_filesystem.a -lboost_system -lboost_filesystem 
Run Code Online (Sandbox Code Playgroud)

但没有运气.我有同样的错误.

由于我不能在帖子中添加2个以上的链接,这里有所有链接
http://pastebin.com/DakVFn12

Ath*_*han 6

我在这里找到了答案:
http:
//www.richelbilderbeek.nl/CppLinkErrorUndefinedReferenceToBoostFilesystemDetailGet_current_path_api.htm看起来二进制文件不在/ usr/lib中,而是在/ usr/local/lib中.
所以编译的正确命令是:

g++ -g tut1.cpp -o tut1 -L/usr/local/lib/ -lboost_filesystem
Run Code Online (Sandbox Code Playgroud)

@Yuushi,那是1个问题.

  • 我怀疑`apt-get install libboost-dev-all`把东西放在`/ usr/local`中. (3认同)
  • 它的apt-get install libboost-all-dev (3认同)

Yuu*_*shi 4

-L命令应该是包含库的基本路径,而不是特定库的路径。尝试用-L /usr/lib/代替。