在Ubuntu上为CentOS编译

7
我能否在最新的Ubuntu上安装旧版本的gcc/g++(4.1.3),并使用它来编译一个应该在CentOS上运行的.so文件?由于缺少导入项(GLIB_2_11等),使用Ubuntu版本的gcc编译的二进制文件在CentOS上无法加载。我需要C++(包括异常),所以我不能只是静态链接到glibc,我已经尝试过了。
我能否在不删除较新版本的情况下安装旧版gcc?如何处理旧版gcc所需的库?
我目前正在CentOS中开发代码,但使用起来非常麻烦。我真的想转移到Ubuntu桌面。

在Ubuntu桌面上开发并在CentOS机器上构建最终二进制文件(以及偶尔的集成构建)有什么问题吗?甚至可以在虚拟机中进行构建。 - Joachim Sauer
我已经在使用虚拟机。CentOS 虚拟机目前启动需要 5 分钟,对于一台 4GB RAM 的笔记本电脑来说一个虚拟机已经足够了。 - Meh
如果你还没有尝试过,可以尝试禁用SELinux。我曾经看到它会导致虚拟机内部出现过度的减速。 - Josh Kelley
1个回答

5

对于Ubuntu用户,可以通过运行apt-get install g++-4.1 然后使用g++-4.1代替g++来安装 可用的 g++-4.1 编译器。然而,仅仅使用旧编译器可能无法解决所有库问题。

就像Joachim Sauer说的,最好的办法是在Ubuntu上进行开发,然后在CentOS上进行最终编译。

即使你正在使用C++,静态链接仍然是一种选择。(然而,最好还是在CentOS上进行动态链接)

编辑:虚拟机是在CentOS上构建的最直接的方法,但是如果您想避免运行虚拟机时的内存和CPU开销,并且不关心Ubuntu和CentOS内核之间的差异,则可以创建一个包含CentOS或Fedora文件系统的子目录并chroot进行构建。 这篇博客文章 有详细信息。


1
在Linux上显然静态链接libstdc++比看起来要复杂:http://www.trilithium.com/johan/2005/06/static-libstdc/ - Meh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接