Si vous avez un programme simple en C, comme
int main(void) {return 0;}
Il peut être compilé avec gcc -o test test.c
.
Si je comprends bien, gcc effectue la compilation, l’assemblage, puis la liaison. Les deux dernières étapes sont réalisées en exécutant as
et ld
.
Je peux générer le code d'assemblage à l'aide de gcc -S test.c
.
Que voudriez-vous taper dans un terminal pour convertir le code d'assemblage en un exécutable?
(la raison de le faire est d'apprendre l'Assemblée)
Ce sont les différentes étapes utilisant gcc
gcc -E --> Preprocessor, but don't compile
gcc -S --> Compile but don't assemble
gcc -c --> assemble but don't link
gcc with no switch will link your object files and generate the executable
gcc test.s -o test
compilera la test
de test.s
pour vous.
NASM pourrait également valoir votre temps - il serait peut-être plus facile/plus convivial que gcc
de compiler Assembly.
Une fois que vous avez fait gcc -S -o test.s test.c
, tapez gcc -o test test.s
.
Comme vous le savez peut-être ou non, les quatre étapes de la compilation consistent à pré-traiter (-E), à compiler à Assembly (-S), à assembler en code objet (-c) et enfin à lier. Le plus difficile pour moi était de savoir comment utiliser la sortie du préprocesseur. Voici comment le faire:
gcc -E hello.c | gcc -S -xc -o hello.s -
gcc -c hello.s -o hello.o
gcc hello.o -o hello
Vous pouvez avoir gcc
démarrer et arrêter le processus de compilation où vous voulez. gcc test.s -o test
le compilera test.s
depuis l’assemblage dans un exécutable.