我正在尝试构建一些代码。这是我得到的错误:
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...
我已经尝试构建一个不使用预编译库的快速程序,并且编译得很好。它找到了合适的标题,但不是库。
我做错了什么?
答案 0 :(得分:6)
尝试在 main.cpp
之后放置库。
过去,当GCC忽略库时,我经历了一些奇怪的事情,因为在访问我的源文件之前它不认为它们被使用了。
答案 1 :(得分:1)
链接器通常要求库被排序为最依赖于最少依赖的库(我相信MS不会)。在这种情况下,线程或正则表达式可能取决于系统,因此您需要在依赖于它的另一个boost库之后列出-lsystem
。