Compilare sorgenti a 32 bit su Fedora x86_64

Creato il 30 agosto 2010 da Faster

Per alcune ragioni che il nostro cuore non conosce, certe volte si ha bisogno di compilare sorgenti C a 32 bit.

Se però abbiamo un sistema operativo a 64 bit, non siamo costretti per forza ad installarne un altro a 32 bit in un'altra partizione o su una macchina virtuale. Infatti, è possibile installare la versione a 32 bit delle librerie glibc per compilare così i nostri programmi a 32 bit.

Su Fedora, apriamo un terminale e digitiamo:

yum install glibc-devel.i686

Dopo pochi secondi di download avremo le nostre librerie installate sul sistema.

Adesso però (e spero che non sia così) alcuni di voi si staranno domandando: "non è che adesso però, i nostri programmi verranno compilati sempre a 32 bit?".

Ovviamente no, la compilazione di default sarà sempre quella a 64 bit. Infatti ogni volta che si vorrà compilare un programma a 32 bit si dovrà aggiungere, ai parametri di compilazione, la flag -m32. Ad esempio, se voglio compilare un programma chiamato prog da un sorgente chiamato main.c devo dare il comando:

gcc main.c -m32 -o prog

Adesso non che ci sia bisogno di questo passaggio, vorrei ben dire! Ma siccome voglio apparire più sapiente di quello che sono mostrando tecnicaglie a random, vi porrò la fatidica domanda: "come verifico che il programma è stato compilato davvero a 32 bit?". In questo caso ci viene in aiuto readelf, un programma che ci dà informazioni sugli eseguibili:

readelf -h prog | grep "Class:"

Questo comando risponderà con questa stringa:

Class:   ELF32

Se il programma fosse stato invece compilato a 64 bit avrebbe risposto con ELF64.



Potrebbero interessarti anche :

Possono interessarti anche questi articoli :