【发布时间】: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