现在我使用提供的 gcc 在某个旧版本的 linux (SLED 10) 上编译我的 C++ 软件,它可以在大多数新版本上运行,因为它们具有更新的 glibc。问题是,旧的 gcc 不支持 C++11,我真的很想使用新功能。
现在我有了一些想法,但我相信其他人也有同样的需求。什么对你真正有用?
想法:
- 在更新的系统上构建,静态链接到更新的 glibc。 (不可能吧?)
- 在较新的系统上构建,针对较旧的 glibc 进行编译和链接。
- 使用更新的 gcc 在旧系统上构建,链接旧 glibc。
- 在更新的系统上构建,动态链接到更新的 glibc,设置 RPath 并为我们的 glibc 提供安装程序。
另外,我的软件还支持插件并有一个 SDK。我真的希望我的客户可以轻松地针对我的库进行编译。
提前致谢。欢迎提出想法,首选经过验证的解决方案。
最佳答案
使用较新的 gcc 构建。要么在旧机器上安装新编译器,要么在新机器上编译并在旧机器上安装必要的动态库。
请注意,单个机器上支持多个版本的 libc(以及 libstdc++),因为它们通常是版本化的(即 libc.so.5、libc.so.6 等)
关于c++ - 我可以使用较新的 gcc/clang 来定位较旧的 linux 吗? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11319324/