【问题标题】:Build with gcc for systems with older gcc使用 gcc 构建具有旧 gcc 的系统
【发布时间】:2014-03-11 21:13:28
【问题描述】:

您好,我正在尝试在 Ubuntu 上为 RedHat 6.4 构建可执行文件 - 由于 gcc 版本不同,我正在苦苦挣扎。

RedHat 6.4 机器使用 gcc 4.4.7。 Ubuntu机器使用gcc 4.6.3。

这是我尝试过的:

  • 在 Ubuntu 机器上安装 g++-4.4 并使用旧版本的 gcc 编译:失败,因为代码库使用 g++-4.4 中尚不可用的功能

  • 将 Ubuntu libc.so.6 和 libstdc++.so.6 复制到 RedHat 机器上。程序开始了,然后是段错误。

  • 使用 -Wl,-Bstatic 作为链接选项静态链接 Ubuntu 上的可执行文件。在第三方库上失败并显示“警告:在静态链接的应用程序中使用 'dlopen' 需要在运行时使用 glibc 版本中用于链接的共享库”。

所以我现在有点卡住了......有什么建议吗?

【问题讨论】:

  • 在 RH 6.4 上构建更新版本的 gcc?
  • +1。 GCC 4.4.7 可能无法编译您的应用,但它绝对可以编译 GCC 4.6.3。
  • 确实如此。几乎您唯一的选择是修改应用程序以使用 GCC 4.4.7 构建,或者让 GCC 4.6.3 在您的另一台机器上运行。欢迎来到反向移植的美妙世界。
  • Red Hat 6.4 是真正的史前时代,你为什么要使用它?

标签: c++ gcc static-linking dynamic-linking


【解决方案1】:

基于上面的 cmets,决定在另一台机器上转储 RedHat(没有订阅,所以不容易升级)并切换到具有最新 gcc 的 Fedora。不是一个可扩展的解决方案,但你能做什么。

【讨论】:

  • 哦!不是 Red Hat,而是 RHEL,一个的区别就在那里。在这种情况下,您可以转到CentOS,它与 RHEL 兼容(现在属于 Red Hat 保护伞)。 Fedora 不错,但寿命很短(一年多一点)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
  • 2022-09-30
  • 1970-01-01
相关资源
最近更新 更多