Sull'host a 64 bit sto provando a creare librerie condivise con l'opzione -m32
. È possibile che queste librerie siano collegate con normali librerie a 64 bit?GCC -m32 flag:/usr/bin/ld: saltando incompatibile
sto facendo qualcosa di simile:
g++ -m32 -shared source.cpp -l 64_bit_library.so -o 32_bit_library.so
e ottenere messaggi di errore come questo:
/usr/bin/ld: skipping incompatible 64_bit_library.so
Quindi la mia domanda è: come 64_bit_library.so
e 32_bit_library.so
deve essere compilato su host a 64 bit, a rendere possibile che 32_bit_library.so
sia collegato a 64_bit_library.so
?
Se sei stato davvero attento, potresti essere in grado di riprodurre alcuni giochi con typedef, mmap con il flag MAP_32BIT e segmenti di memoria condivisa, ma è un sacco di problemi! – Flexo
puoi dire in ogni caso come controllare che sia incompatibile? usando forse forse? - http://rzr.online.fr/q/gcc – RzR
@rzr - Il modo più semplice per controllare sarebbe semplicemente utilizzare il comando 'file' sull'oggetto condiviso e vedere se corrisponde a quello che stai provando fare con gcc. Si può lavorare con 'readelf -h' o' objdump -x', anche se per esempio, ma trovo che l'output di 'file' sia più conciso. – Flexo