Problème avec LD

Bonjour,

Et oui je suis de retour (assez vite tout de même...)
J'ai décidé de compiler mon OS sous cygwin donc.

j'ai fait
gcc -c (fichier.c) -o (fichier de sortie .o) 

pour chaque fichier.

Puis j'ai lancé cette commande :
ld --oformat binary -Ttext 1000 kernel.o screen.o gdt.o lib.o -o kernel 


Et là, c'est le drame.

ld : cannot perform pe operations on non pe output file

ou un truc qui y ressemble.

Bref ça m'énerve et j'aimerais trouver une solution parce que la VM sous VirtualBox c'est bien mais c'est lassant à la longue...

Sinon : La compilation avec gcc se passe bien.

Il n'y a que le link qui foire.

Sinon si vous me trouvez autre chose, il faut que je puisse décaler les adresses de 0x1000 et que la sortie soit en pur bytecode.

Merci d'avance :)

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. C'est bon !

    J'ai trouvé une solution :
    Si tu veux faire un .exe Windows :
    gcc -Wall -pedantic-errors kernel.c -o kernel.exe -nostdlib -Wl,-Ttext=0x20000,-nostdlib
    Mais ça va rajouter du code, et c'est moyen...
    Don il faut que tu fasse :
    gcc -Wall -pedantic-errors kernel.c -o kernel.exe -nostdlib -Wl,-Ttext=0x20000,-nostdlib
    objcopy -O binary -j .text kernel.exe kernel.bin


    Regarde ici : http://www.websofia.com/2011/10/linking-a-flat-binary-from-c-with-mingw/
    C'est là que j'ai tout trouvé.