未定义的参考`的boost :: program_options :: options_descri

2019-06-27 13:21发布

我试图编译代码,我得到的错误

未定义参考boost::program_options::options_description::m_default_line_length

我用G ++在Ubuntu 12.04。 虽然我已经做了一些C ++编程我是新来的Linux开发环境(仅使用以前的IDE)。

所以我做了这麻烦一个基本的搜索,发现的一些链接问题。 我不明白他们因为我是一个新手。 阅读一些这些解决方案的进一步搞糊涂了。 我Boost库文件夹是在/usr/include 。 一些解决方案说,它应该是在/usr/lib 。 但我没有任何提升的文件夹在那里。

我需要做什么改变吗?

Answer 1:

如果您已经安装了回购提振只使用-lboost_program_options这就够了。
如果你在其他一些库安装Boost库,您需要通过指定directoty -L/path/to/lib

在CMake的你可以指定set(CMAKE_CXX_FLAGS "-lboost_program_options")

然而,随着CMake的你应该使用

FIND_PACKAGE(Boost COMPONENTS program_options REQUIRED)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(target ${Boost_LIBRARIES})


Answer 2:

有更改<string>类在C ++ 11标准,其可以与用非C ++ 11编译器(如G ++ - 4.8)编译Boost库的版本冲突。 尝试重新编译升压或使用C ++编译器的版本,用于编译Boost库。



Answer 3:

也仔细检查预处理器变量的设置_GLIBCXX_USE_CXX11_ABI是相同的用于编译升压的变量的设置。 该变量的默认设置可以根据所使用的GNU编译器的Linux分发和版本是不同的。

见双ABI以获取更多信息。



Answer 4:

在哪里Boost库(文件以.so和.A结束)? 找到这些,然后添加到您的链接命令:-L /路径/到/升压/库-lname-的升压-LIB

这有可能是最常见的问题的人时,首先启动C面++。 有可能在SO一千其他未定义的引用问题。 只要搜索未定义的引用。



Answer 5:

这些库通常安装到/usr/lib (如我的系统上, /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.58.0 )。

为了编译将会与那些库链接代码,您通常使用的头文件中,提供的/usr/include

不像许多图书馆,加速不附带pkg配置文件,所以你需要自己添加链接标志。 与通常的Makefile的规则,你需要像LDLIBS += -lboost_program_options

还要注意的是,虽然libboost-dev软件包提供的标头program_options ,你也需要安装libboost-program-options-dev得到相应的库。



文章来源: undefined reference to `boost::program_options::options_description::m_default_line_length'