【错误】undefined reference to `boost::....的…
2018-06-17 22:25:54来源:未知 阅读 ()
很多新手引用Boost库编程,在ubuntu下编译时候有时候会出现如下错误:
test04.cpp:(.text+0x2c): undefined reference to `boost::program_options::options_description::m_default_line_length'
test04.cpp:(.text+0x37): undefined reference to `boost::program_options::options_description::m_default_line_length'
test04.cpp:(.text+0x7c): undefined reference to `boost::program_options::options_description::options_description(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned int)'
这个问题的出现是因为使用g++编译C++项目文件时,没有链接Link上对应所需的库。解决办法有两种:
(1)在编译文件时加上配置选项
比如,一般情况下test.cpp编译时的语句为:
g++ -std=c++11 -o test.elf test.cpp
在使用了Boost库出现上述问题时,在后面加上“-lboost_具体库名”可将编译语句改为:
g++ -std=c++11 -o test.elf test.cpp -lboost_program_options
如果报错为“undefined reference to `boost::system::....'”就可以加上-lboost_system
注释:当使用C++11标准库时需要在编译配置中加上“-std=c++11”,一半情况下使用新版的Boost都会掺杂C++11的内容,所以这个配置项最好加上。
(2)在Makefile中修改配置
如:打开Makefile找到规则
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
修改为:
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) -lboost_system -lboost_thread
注意Makefile的格式/tab与空格是有定义区别的,而如果用QTCreator打开Makefile,保存时会以数个空格替换掉/tab,这将导致后续make不能执行,所以需要用比如Vim这样的编辑器打开修改。
(3)关于#include <>
使用Boost,添加几个:
#include <boost/program_options/parsers.hpp>
#include <boost/program_options/variables_map.hpp>
#include <boost/program_options/options_description.hpp>
#include ...........................
和使用1个:
#include <boost/program_options.hpp>
功能是一样的,如果能够精确知道使用的类属于哪个文件,最好使用第一种#include方式,如果不知道,可以使用第二种。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 构造函数 2020-06-03
- 引用传参与reference_wrapper 2020-04-21
- g++链接gcc编译的库报错“undefined reference to xxx” 2020-04-14
- 使用错误代码对象进行C++错误处理 2020-04-10
- C++ non-const lvalue reference cannot bind to a temporar 2020-03-09
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash