无法链接到lboost_program_options

时间:2014-04-09 11:20:18

标签: c++ linker-errors boost-program-options

我正在尝试使用以下g ++命令编译我的项目:

g++ -Wall -o mdaemon mdaemon-Mdaemon.o mdaemon-Rm.o mdaemon-Share.o mdaemon-SuperDaemon.o mdaemon-wmxver.o  -pthread -L/home/sunshyn/wmx_simmode/src/../cots/lib/i686-redhat-linux-gnu ..//common/libcommon.a ..//common/pm/libpm.a ..//common/br/librouter.a ..//common/br/tcp/libipc_tcp.a ..//common/applink/libapplink.a ..//common/ur/libur.a ..//common/pma/libpma.a ..//common/cma/libcma.a -lbz2 -lcurses -ldl -lpthread -lboost_program_options -lboost_thread

这会导致错误显示如下:

mdaemon-Mdaemon.o(.text+0x29b6): In function `main':
: undefined reference to `boost::program_options::options_description::m_default_line_length'
mdaemon-Mdaemon.o(.text+0x29c0): In function `main':
: undefined reference to `boost::program_options::options_description::options_description(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)'
collect2: ld returned 1 exit status
make: *** [mdaemon] Error 1

请告诉我命令中的错误是什么?

1 个答案:

答案 0 :(得分:0)

错误很可能意味着您没有将应用程序链接到program_options库。

仔细检查-L path(目录,除了默认目录,在哪里查找库)。

您还可以尝试在文件列表中包含库的完整路径,而不使用-l(例如g++ sources.cc ... /usr/lib/libboost_program_options.a)来链接静态库。