[问题] devtoolset linking问题

楼主: shadow0326 (非议)   2018-06-21 11:28:29
开发平台(Platform): (Ex: Win10, Linux, ...)
CentOS 6
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
devtoolset-2的gcc
问题(Question):
CentOS 6系统默认的gcc版本是4.4.7,过于老旧,许多c++11 feature都不支援
为了使用比较新的功能,所以我安装了devtoolset
devtoolset-2的gcc版本是4.8.2
当我利用devtoolset来编译一些4.4.7无法编译,但是4.8.2可以编译的code之后
(例如 std::regex_match 在 4.4.7 不支援)
发现编译出来的执行档连结到的仍然是系统默认的lib
# /opt/rh/devtoolset-2/root/usr/bin/g++
楼主: shadow0326 (非议)   2018-06-21 14:38:00
后来想了一下,应该是有static link到.a档
作者: sarafciel (Cattuz)   2018-06-21 15:04:00
所有的template都是在编译期生成真正的code反过来说 template除非有做特化 不然不会编在.so里面回到std::regex_match,它实际上是template function所以libstdc++并不包含它的实作(实际上也没办法)而它的code是写在regex.h跟regex.tcc里面所以应该是你用到的feature在编译阶段做掉了如果要测没换++11会炸掉的情况 我记得std::thread可以
楼主: shadow0326 (非议)   2018-06-21 15:23:00
我懂了,非常感谢,刚试了std::thread的确会seg fault

Links booklink

Contact Us: admin [ a t ] ucptt.com