La façon la plus simple est de compiler le code C pour les fichiers objets (gcc -c
pour obtenir quelques *.o
fichiers) et de les lier directement avec l'éditeur de liens (ld
). Vous devez lier vos fichiers objets avec un supplément de quelques fichiers d'objets tels que /usr/lib/crt1.o
afin d'obtenir un exécutable (entre le point d'entrée, comme on le voit par le noyau, et l' main()
de la fonction, il y a un peu de travail à faire). À savoir que lien avec, essayer en lien avec la glibc, à l'aide de gcc -v
: cela devrait vous montrer ce qui est normalement inclus dans l'exécutable.
Vous trouverez gcc génère du code qui peuvent avoir des dépendances à quelques fonctions cachées. La plupart d'entre eux sont en libgcc.a
. Il peut également être caché appels d' memcpy()
, memmove()
, memset()
et memcmp()
, qui sont dans la libc, de sorte que vous devrez peut-être fournir votre propre version (qui n'est pas dur, au moins aussi longtemps que vous n'êtes pas trop pointilleux sur la performance).
Choses pourraient obtenir plus claire à la fois, si vous regardez les produits de l'assemblée (utiliser l' -S
drapeau).