在Travis CI上的Boost中对`std :: __ cxx11 :: basic_string的未定义引用

And*_*ian 7 c++ gcc boost c++11 travis-ci

我正在尝试获得一个C+++项目,它在GitHub上使用Boost在Travis CI上正确编译.

首先我尝试了ubuntu上的软件包和PPA,但它们太旧了(我至少需要Boost 1.61).

只有当我在Travis CI(下载,编译)上编译Boost时才能使用它,但不幸的是,编译时间很长(11-18分钟)并且日志文件非常庞大.

考虑如何解决这个问题,我想到了编译我的机器上的提升,压缩,上传到某个Web服务器,只是下载并复制/ usr/local/[include/lib]相应的文件.

是我在我的机器上使用的编译器.我编译了boost使用

./bootstrap.sh --prefix=/home/andrei/boostabc
/usr/bin/time ./b2 install link=static
Run Code Online (Sandbox Code Playgroud)

是travis文件(和存储库).在评论中我是通过编译boost来实现的.

问题是我遇到了很多错误:

/usr/local/lib/libboost_filesystem.a(operations.o): In function `(anonymous namespace)::dir_itr_first(void*&, void*&, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, boost::filesystem::file_status&, boost::filesystem::file_status&) [clone .isra.46] [clone .constprop.56]':
operations.cpp:(.text+0xa8): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Run Code Online (Sandbox Code Playgroud)

我搜索了这个错误,我发现可能存在关于某些C++ 11 ABI和宏的错误配置.我不太了解这个解释,我也不知道如何让它工作.

如果你能指出我正确的解决方向,我将不胜感激.

jhe*_*iko 8

您应该尝试将-D_GLIBCXX_USE_CXX11_ABI = 0添加到用于编译它的命令行,并查看是否解决了这个问题.

我认为您调用的g ++/gcc中的一个或另一个很可能不是版本6 ...否则默认情况下将设置为1 iirc.

这在此处记录