c++ - 我可以使用较新的 gcc/clang 来定位较旧的 linux 吗? C++

标签 c++ linux glibc

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

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

想法:

  1. 在更新的系统上构建,静态链接到更新的 glibc。 (不可能吧?)
  2. 在较新的系统上构建,针对较旧的 glibc 进行编译和链接。
  3. 使用更新的 gcc 在旧系统上构建,链接旧 glibc。
  4. 在更新的系统上构建,动态链接到更新的 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/

相关文章:

linux - sbrk(2) 或 mmap(2) 可以阻塞吗?

c++ - 需要帮助解决 NXP Linux 上的 std::thread::join() 问题

c - 当我遇到套接字代码时,我正在仔细阅读 glibc,有人可以解释发生了什么吗?

linux - 为什么编辑.fini_array不会改变程序的过程?

c++ - C++ 中的 binary_search 意外行为

c++ - 在 C++ 中的宏中禁用逗号

c - 写入()到 i2c 设备 : Operation not permitted

python - python的fcntl.ioctl中的 'op'是什么意思?

c++ - Visual Studio 2015 - 错误 C2375 : 'snprintf' : redefinition; different linkage

c++ - 作为 C++ 类的成员启动线程的最佳方式?