En el host de 64 bits estoy intentando construir bibliotecas compartidas con la opción -m32
. ¿Es posible que estas bibliotecas estén vinculadas a bibliotecas regulares de 64 bits?GCC -m32 bandera:/usr/bin/ld: omisión incompatible
que estoy haciendo algo como esto:
g++ -m32 -shared source.cpp -l 64_bit_library.so -o 32_bit_library.so
y recibiendo mensajes de error como este:
/usr/bin/ld: skipping incompatible 64_bit_library.so
Así que mi pregunta es: ¿cómo 64_bit_library.so
y 32_bit_library.so
debe ser compilado en el host de 64 bits, a Permitir que 32_bit_library.so
se vincule con 64_bit_library.so
?
Si fue muy cuidadoso, es posible que pueda jugar algunos juegos con typedef, mmap con el indicador MAP_32BIT y segmentos de memoria compartida, pero es una gran cantidad de problemas. – Flexo
¿Puedes decir de todos modos cómo comprobar que no es compatible? usando readelf tal vez? - http://rzr.online.fr/q/gcc – RzR
@rzr - La forma más fácil de verificar sería simplemente usar el comando 'file' en el objeto compartido y ver si coincide con lo que está intentando para hacer con gcc. Puede resolverlo con 'readelf -h' o' objdump -x' por ejemplo, pero creo que el resultado de 'file' es más conciso. – Flexo