G ++找不到boost库。我说他们很明显

时间:2012-01-19 19:52:36

标签: c++ linux gcc boost g++

我正在尝试构建一些代码。这是我得到的错误:

main.o: In function `__static_initialization_and_destruction_0':
/home/jmbeck/Downloads/boost_1_48_0/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'

还有更多,但我不认为这是相关的。

这是构建命令:

g++ -I/home/jmbeck/Downloads/boost_1_48_0 
    -L/home/jmbeck/Downloads/boost_1_48_0/stage/lib 
    -lm 
    -lboost_system 
    -lboost_thread
    -lboost_regex 
    main.cpp

/ home / jmbeck / Downloads / boost_1_48_0 / stage / lib目录包含预期的文件:

libboost_system.a
libboost_system.so@
libboost_system.so.1.48.0*
libboost_thread.a
libboost_thread.so@
libboost_thread.so.1.48.0* 
libboost_regex.a
libboost_regex.so@
libboost_regex.so.1.48.0*
... etc...

我已经尝试构建一个不使用预编译库的快速程序,并且编译得很好。它找到了合适的标题,但不是库。

我做错了什么?

2 个答案:

答案 0 :(得分:6)

尝试在 main.cpp之后放置库。

过去,当GCC忽略库时,我经历了一些奇怪的事情,因为在访问我的源文件之前它不认为它们被使用了。

答案 1 :(得分:1)

链接器通常要求库被排序为最依赖于最少依赖的库(我相信MS不会)。在这种情况下,线程或正则表达式可能取决于系统,因此您需要在依赖于它的另一个boost库之后列出-lsystem