¿Es posible la compilación cruzada i686-i486 en Ubuntu?

Imagen de almursi
0 puntos

buenas, resulta que se me pasó por alto un detalle importante: desde Ubuntu 10.10 sólo se incluye el soporte para la arquitectura i686, con lo que es imposible compilar cualquier programa para correrlo después en una máquina i586 o i486. Y digo yo, con lo sencillo que es hacer una compilación cruzada x86-MIPS y lo complicado que parece i686-x86, puesto que me da la impresión de que es necesario recompilar todas las binutils, gcc y glibc6 para recuperar los objetivos de compilación de las arquitecturas de destino.

Lo comento por si alguien conoce algún medio más sencillo... de lo contrario veo que lo más razonable es usar una distribución que traiga de partida libc6 para i486 como Debian (y que te da opción de instalar libc6-i686, pero sólo si quieres).

Saludos cordiales.

Imagen de berarma
+1
0
-1

Acabo de hacer una compilación de prueba en Ubuntu 11.10 con el comando "gcc -march=i486" y ha funcionado. Sería extraño que hubiesen eliminado esa posibilidad.

+1
0
-1
Imagen de almursi
+1
0
-1

buenas, una cosa es que parezca que puedas compilar y otra muy diferente que estés compilando realmente para i486 (en ubuntu 10.10 y posteriores). Ahora intenta ejecutar el resultado en cualquier equipo con un procesador x86 sin la instrucción cmov y comprobarás que no funciona: el único objetivo de compilación posible es i686 (mira gcc y verás que sólo existe /usr/bin/i686-linux-gnu-gcc). Saludos cordiales.

+1
0
-1
Imagen de berarma
+1
0
-1

Que sólo existan enlaces i686-* no significa que no puedas compilar para otra arquitectura. Puede que tengas otro problema, como por ejemplo que enlaces estáticamente con código que no esté compilado para i486.

No soy experto en compiladores, pero me ha parecido muy extraño lo que has dicho de que hayan quitado objetivos de compilación y que no esté indicado en ningún sitio, incluso las herramientas funcionan normalmente sin sugerir nada. Si no quieres indagar más prueba Debian a ver si tienes más suerte. Yo soy usuario de Debian también y es muy buena para desarrollo.

+1
0
-1
Imagen de almursi
+1
0
-1

buenas, quizá una vez que se está usando libc6-i686 es fácil que se incluya código incompatible (efectivamente con un main con return 0 funciona sin problemas). Cuando se trata de un paquete de código lo configuras con la opción "host = i486-pc-linux-gnu" o semejante, pero no logré que funcionara hasta que lo compilé en la propia máquina (aunque teóricamente la opción del host era pasada correctamente al compilador). Acabaré por instalar todas las herramientas en Debian y si tengo ocasión veré si el problema es debido a una errata en la configuración del paquete. Gracias por el apunte. Saludos cordiales.

+1
0
-1