我用C++11特性编写了一个共享库,用gcc 4.8,libc 2.18编译,它需要在客户端的CentOS 6机器上运行,后者有gcc 4.4.7,libc 2.12。这个库中有一些符号在libc 2.12中是找不到的,所以我如何在CentOS 6上使用这个库。在如何、在哪里、哪台机器可以编译库方面,我有灵活性,但最终它应该可以在客户端CentOS 6上使用,因为在客户端不能访问包。在CentOS 6上用DevTools-2编译它可以吗?或者有任何与ABI相关的问题。如果还有其他建议,请告诉我。提前谢谢。
发布于 2019-08-26 02:41:23
在与运行系统相同的系统上编译。您可能需要重新编译发行版的版本跳转(例如,7-8版本),有时还需要重新编译berween版本。
如果您使用不同的编译器版本,您可能会遇到编译器的共享助手库、基C或C++库(很可能是)或各种外部依赖项之间的不兼容。不是一塌糊涂,我想调试一下。
发布于 2016-06-23 12:44:29
C++11特性,用gcc 4.8编写
?为什么不使用g++ 4.8呢?
建议:用libstdc++.a→静态编译库--我认为C++11函数在*libstdc++-devel中,而不是glibc中。
devtoolset-2-libstdc++-devel-4.8.2附带了静态库:
/opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.2/{ libstdc++.a, libstdc++_nonshared.a }
https://unix.stackexchange.com/questions/291599
复制相似问题