dhavalhirdhav / LearnOS

This is one of my long awaited project on learning to develop an Operating System.
http://www.learnitonweb.com
57 stars 5 forks source link

loader.elf seems to output as "executable" and ld refuses to link it #31

Open robindegen opened 2 years ago

robindegen commented 2 years ago

I'm not sure if this is just because of changes in the new versions, but i'm getting the following:

ld: cannot use executable file 'debug/elf/loader.elf' as input to a link

If I run file on it it says:

debug/elf/loader.elf: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, with debug_info, not stripped
robindegen commented 2 years ago

Looks like starting from ld version 2.36.1 you need to pass the -r flag to make it output a relocatable object.

- wsl ld -m elf_i386 -nostdlib -T ld/loader.ld debug/obj/*.o -o debug/elf/loader.elf
+ wsl ld -r -m elf_i386 -nostdlib -T ld/loader.ld debug/obj/*.o -o debug/elf/loader.elf

https://stackoverflow.com/questions/68622938/new-versions-of-ld-cannot-take-elf-files-as-input-to-link