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