2010-05-04 200 views
5

我可以在最新版本的Ubuntu(附带4.4.3)上安装旧版本的gcc/g ++(4.1.3),并使用它来编译应该在CentOS上运行的.so。由于缺少导入(GLIB_2_11,...),使用Ubuntu版本的gcc编译的二进制文件无法在CentOS上加载。我需要C++(包括异常),所以我不能只是静态链接glibc,我已经尝试过了。在Ubuntu上编译为CentOS

我可以安装旧的gcc而不删除较新的gcc吗?我如何去了解旧的gcc所需的库?

我目前正在CentOS中开发代码,但使用起来非常痛苦。我真的想转移到Ubuntu桌面。

+0

在Ubuntu桌面上开发并在CentOS机器上构建最终的二进制文件(偶尔可能集成构建)(甚至可能在虚拟机中)会出现什么问题。 – 2010-05-04 11:48:10

+0

我已经使用虚拟机。 CentOS虚拟机目前在5分钟内启动,一台虚拟机已经足够用于4GB RAM的笔记本电脑。 – Meh 2010-05-04 13:50:29

+0

尝试禁用SELinux,如果你还没有。我已经看到这会导致虚拟机中过度放缓。 – 2010-05-04 14:44:27

回答

5

g ++ - 4.1 is available for Ubuntu;只需运行apt-get install g++-4.1然后运行g++-4.1而不是g++。但是,仅使用较旧的编译器可能无法解决所有库问题。

像Joachim Sauer说的那样,你最好的选择是在Ubuntu上做你的开发,然后在CentOS上做最后的编译。

即使您使用C++,静态链接仍应该是一个选项。 (但是,在CentOS上编译和使用动态链接要好得多)。

编辑:虚拟机是建立在CentOS上最直接的方法,但是如果你想避免内存和CPU开销运行虚拟机并且不关心Ubuntu和CentOS内核之间的差异,那么你可以创建一个包含CentOS或Fedora文件系统的子目录,并且chroot可以完成你的构建。 This blog posting有详细信息。

+1

显然,在Linux上静态链接到libstdC++看起来更复杂:http://www.trilithium.com/johan/2005/06/static-libstdc/ – Meh 2010-05-04 13:56:47