15

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

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

想法:

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

作为奖励,我的软件还支持插件并有一个 SDK。我真的更希望我的客户可以毫不费力地针对我的库进行编译。

提前致谢。欢迎提出想法,首选经过验证的解决方案。

4

1 回答 1

2

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

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

于 2012-07-03T22:00:29.763 回答