2010-05-04 20 views
5

¿Puedo instalar una versión anterior de gcc/g ++ (4.1.3) en el último Ubuntu (que viene con 4.4.3) y usarlo para compilar un .so que debería ejecutarse en CentOS? El binario compilado con la versión de Ubuntu de gcc no se carga en CentOS debido a la falta de importaciones (GLIB_2_11, ...). Necesito C++ (incluidas las excepciones), así que no puedo vincular estáticamente contra glibc, que ya probé.Compilar para CentOS en Ubuntu

¿Puedo instalar el gcc anterior sin quitar el más nuevo? ¿Cómo hago para obtener las libretas requeridas por el gcc más antiguo?

Actualmente estoy desarrollando código en CentOS, pero es tan doloroso de usar. Realmente quiero moverme a un escritorio Ubuntu.

+0

¿Qué hay de malo en desarrollar en un escritorio Ubuntu y construir sus binarios finales (y compilaciones de integración ocasional) en una máquina CentOS (tal vez incluso dentro de una máquina virtual). –

+0

Ya uso máquinas virtuales. La máquina virtual CentOS actualmente arranca en 5 minutos, y una máquina virtual ya es suficiente para una computadora portátil con 4 GB de RAM. – Meh

+0

Pruebe a deshabilitar SELinux, si aún no lo ha hecho. He visto que causa una desaceleración excesiva dentro de las máquinas virtuales. –

Respuesta

5

g ++ - 4.1 is available para Ubuntu; simplemente ejecute apt-get install g++-4.1 luego ejecute g++-4.1 en lugar de g++. Sin embargo, simplemente el uso de un compilador anterior puede no solucionar todos los problemas de su biblioteca.

Como dijo Joachim Sauer, su mejor opción es hacer su desarrollo en Ubuntu y luego hacer la compilación final en CentOS.

Aunque esté utilizando C++, la vinculación estática aún debería ser una opción. (Sin embargo, es mucho mejor que la compilación en CentOS y el uso de la vinculación dinámica.)

Editar: Una máquina virtual es la forma más sencilla de construir en CentOS, pero si se quiere evitar la sobrecarga de la memoria y de la CPU de ejecutar una máquina virtual y no le importan las diferencias entre el kernel de Ubuntu y CentOS, entonces puede crear un subdirectorio que contenga un sistema de archivos CentOS o Fedora y chroot hacer eso para hacer sus compilaciones. This blog posting tiene detalles.

+1

Aparentemente, vincular estáticamente contra libstdC++ en Linux es más complicado de lo que parece: http://www.trilithium.com/johan/2005/06/static-libstdc/ – Meh