我正在尝试使用以下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
请告诉我命令中的错误是什么?
答案 0 :(得分:0)
错误很可能意味着您没有将应用程序链接到program_options库。
仔细检查-L path
(目录,除了默认目录,在哪里查找库)。
您还可以尝试在文件列表中包含库的完整路径,而不使用-l(例如g++ sources.cc ... /usr/lib/libboost_program_options.a
)来链接静态库。