CentOS本身不再维护
因为不再维护,部分镜像源仓库(清华源) 开始停止服务。
目前遇到的问题是,当尝试编译程序时,需要的依赖无法下载,并且后续处理只能通过换源的方案,如果没有稳定的源,应该逐渐放弃使用CentOS
基于CentOS编译出的C++库,可能存在兼容性的问题
具体来说,这个是GCC的stdc++实现原因,在GCC 5.1 中,std::string std::list有新实现,并且ABI与之前(常见于 GCC 4.8)的不兼容。
CentOS默认的GCC就是低版本的
如果需要链接的lib是基于5.1之前的GCC编译,并且自己的GCC>=5.1,就会出现这个问题,有几个解决方案:
- 编译的时候,加上
-D_GLIBCXX_USE_CXX11_ABI=0
,这时会用旧的ABI来进行编译项目 - 降级GCC到4.8,并且打上升级补丁,以支持高版本C++ 14 17特性
- 另外如果本机存在多个GCC,也要注意链接的stdc++版本是否符合预期