compilar programas en plataforma 64 a 32
Existe alguna manera de compilar a 32 bytes?. Estoy con el GCC y tengo suse 9.2 profesional montado en un AMD64, mirando el man veo un "-m32" pero no resulta da problemas en el ld ... alguna idea/sugerencia? chakal@linux:~/Documents> gcc -Wall -o bot -s bot.c -m32 /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/bin/ld: saltando el /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../libc.so incompatible mientrasse buscaba -lc /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/bin/ld: saltando el /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../libc.a incompatible mientras se buscaba -lc /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/bin/ld: no se puede encontrar -lc collect2: ld returned 1 exit status
Lo que quieres va a ser que es imposible :-( Si compilas en un procesador de 64 bits el código máquina generado solo funciona en esa arquitectura (64 bits), hay instrucciones que los procesadores de 32 bits no entienden por eso la compatibilidad hacia abajo es imposible. Otra cosa es ejecutar programas de 32 bits en procesadores de 64, esto si que es posible porque se ha mantenido una compatibilidad hacia arriba. Pero lo que pides... ojalá :-) Nos vemos. Víctor chakal^-^ escribió:
Existe alguna manera de compilar a 32 bytes?. Estoy con el GCC y tengo suse 9.2 profesional montado en un AMD64, mirando el man veo un "-m32" pero no resulta da problemas en el ld ... alguna idea/sugerencia?
chakal@linux:~/Documents> gcc -Wall -o bot -s bot.c -m32 /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/bin/ld: saltando el /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../libc.so incompatible mientrasse buscaba -lc /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/bin/ld: saltando el /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../libc.a incompatible mientras se buscaba -lc /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/bin/ld: no se puede encontrar -lc collect2: ld returned 1 exit status
-- Víctor Berga [vbergae at infonegocio.com] *http://phpgescen.espicato.com Linux Registered User: #286951 ----------------------------------------------------- "Sin música, la vida sería un error..."
Hola :) El Martes, 4 de Enero de 2005 09:55, chakal^-^ escribió:
Existe alguna manera de compilar a 32 bytes?. Estoy con el GCC y tengo suse 9.2 profesional montado en un AMD64, mirando el man veo un "-m32" pero no resulta da problemas en el ld ... alguna idea/sugerencia?
chakal@linux:~/Documents> gcc -Wall -o bot -s bot.c -m32 /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/bi n/ld: saltando el /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../libc.so incompatible mientrasse buscaba -lc /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/bi n/ld: saltando el /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../libc.a incompatible mientras se buscaba -lc /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/bi ^^^^
n/ld: no se puede encontrar -lc collect2: ld returned 1 exit status
Si no me equivoco, lo que te pide son las librerías de 32 bits. Es decir, estás compilando diciendo que quieres un ejecutable de 32 bits (-m32), pero estás enlazando con librerías de 64 bits ... Por eso te dice que no encuentra al -lc (opción que te permite indicarle al compilador dónde se encuentran las librerías de 32 bits para enlazar con el exe de 32 bits). Teóricamente debería haber un directorio que se llame /usr/lib/ Para cada: /ruta/lib64/ (64 bits) debe haber un /ruta/lib/ (32 bits) En resumen, si pones: -m32 -lc /usr/lib/ te debería funcionar. Digo "debería" porque no tengo una AMD64 para comprobarlo. Me puedo haber equivocado en rutas o nombres, pero la idea es esa. Espero haberme explicado 0;) Ahora me toca preguntar a mi, ¿por qué quieres un binario de 32 bits en una máquina de 64? El de 32 bits tendrá limitaciones de memoria, por ejemplo (no podrá acceder a más de 4GB de RAM). Rafa -- Rafa Grimán, Category Specialist Paseo de la Castellana 95- 27ª Torre Europa 28046 Madrid SPAIN Tel: +34 (91) 555-6567 extn 1190 Direct: +34 (91) 417 81 87 Fax: +34 (91) 555 29 15
Por portavilidad claro ya que compilando en plataforma de 64 no sepuede ejecutar en una de 32 ... El Martes, 4 de Enero de 2005 12:06, Rafa Griman escribió:
Hola :)
El Martes, 4 de Enero de 2005 09:55, chakal^-^ escribió:
Existe alguna manera de compilar a 32 bytes?. Estoy con el GCC y tengo suse 9.2 profesional montado en un AMD64, mirando el man veo un "-m32" pero no resulta da problemas en el ld ... alguna idea/sugerencia?
chakal@linux:~/Documents> gcc -Wall -o bot -s bot.c -m32 /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/ bi n/ld: saltando el /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../libc.so incompatible mientrasse buscaba -lc /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/ bi n/ld: saltando el /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../libc.a incompatible mientras se buscaba -lc /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/ bi
^^^^
n/ld: no se puede encontrar -lc collect2: ld returned 1 exit status
Si no me equivoco, lo que te pide son las librerías de 32 bits. Es decir, estás compilando diciendo que quieres un ejecutable de 32 bits (-m32), pero estás enlazando con librerías de 64 bits ...
Por eso te dice que no encuentra al -lc (opción que te permite indicarle al compilador dónde se encuentran las librerías de 32 bits para enlazar con el exe de 32 bits).
Teóricamente debería haber un directorio que se llame
/usr/lib/
Para cada:
/ruta/lib64/ (64 bits)
debe haber un
/ruta/lib/ (32 bits)
En resumen, si pones:
-m32 -lc /usr/lib/
te debería funcionar. Digo "debería" porque no tengo una AMD64 para comprobarlo. Me puedo haber equivocado en rutas o nombres, pero la idea es esa.
Espero haberme explicado 0;)
Ahora me toca preguntar a mi, ¿por qué quieres un binario de 32 bits en una máquina de 64? El de 32 bits tendrá limitaciones de memoria, por ejemplo (no podrá acceder a más de 4GB de RAM).
Rafa
-- Rafa Grimán, Category Specialist
Paseo de la Castellana 95- 27ª Torre Europa 28046 Madrid SPAIN
Tel: +34 (91) 555-6567 extn 1190 Direct: +34 (91) 417 81 87 Fax: +34 (91) 555 29 15
participants (3)
-
chakal^-^
-
Rafa Griman
-
Víctor Berga