我可以用更新的gcc/clang来定位旧的linux吗?C++

Dav*_*vid 13 c++ linux glibc

现在我使用提供的gcc在某个旧版本的Linux(SLED 10)上编译我的C++软件,它可以在大多数新版本上运行,因为它们有更新的glibc.问题是,旧的gcc不支持C++ 11,我真的很想使用新功能.

现在我有一些想法,但我相信其他人也有同样的需求.什么对你有用?

思路:

  1. 构建一个更新的系统,静态链接到更新的glibc.(不可能,对吧?)
  2. 构建在较新的系统上,编译并链接旧的glibc.
  3. 使用更新的gcc构建旧系统,链接旧glibc.
  4. 构建一个更新的系统,动态链接到更新的glibc,设置RPath并为我们的glibc提供安装程序.

作为奖励,我的软件也支持插件并有一个SDK.我真的更喜欢我的客户可以编译我的库而不会有太大的麻烦.

提前致谢.欢迎提供,经过验证的解决方案

Ano*_*ail 2

使用较新的 gcc 构建。要么在旧机器上安装新的编译器,要么在新机器上编译并在旧机器上安装必要的动态库。

请注意,单台计算机支持多个版本的 libc(以及 libstdc++),因为它们通常是版本化的(即 libc.so.5、libc.so.6 等)