Weil mir mit zunehmender "Größe" meines Betriebssystems der einfache Texteditor mir immer mehr zu umständlich wird, wollte ich heute mal Eclipse ausprobieren. Ich hab es geschafft die Umgebung passend einzurichten und die Sources richtig kompilieren zu lassen. Aber beim Linken kommt immer ein sehr seltsamer von mir nicht nachvollziehbarer Fehler "cannot find obj\init_S.o".
Bisher habe ich immer so gelinkt: (mit einer BAT)
i586-elf-ld -L "%GCC_PATH%\lib" -L "%GCC_PATH%\lib\gcc\i586-elf\%GCC_VERSION%" -T linkconf.ld -o obj\kernel.bin obj\*.o "%LIBGCC_FILE_NAME%" -Ttext=0x100000
In Eclipse sieht die Kommandozeile dann so aus:
Building target: kernel.bin
Invoking: Cross GCC Linker
i586-elf-ld -nodefaultlibs -nostdlib -static -L"C:\Programmordner\MinGW\OSprogramming\lib" -L"C:\Programmordner\MinGW\OSprogramming\lib\gcc\i586-elf\4.4.0" -Ttext=0x100000 -T "C:/Eigenes/Programmierung/Betriebssystem/System001\linkconf.ld" -o "kernel.bin" ./stdlib/sysapi/api.o ./stdlib/sysapi/asm.o ./stdlib/sysapi/charconv.o ./stdlib/sysapi/console.o ./stdlib/sysapi/cpuid.o ./stdlib/sysapi/textio.o ./stdlib/assert.o ./stdlib/errno.o ./stdlib/math.o ./stdlib/stdlib.o ./stdlib/string.o ./stdlib/time.o ./stdlib/uchar.o ./stdlib/wchar.o ./kernel/api_intr.o ./kernel/com.o ./kernel/cpustate.o ./kernel/gdt.o ./kernel/intr.o ./kernel/lowlevelbeep.o ./kernel/lowlevelconsole.o ./kernel/lowleveltime.o ./kernel/mm.o ./kernel/mmp.o ./kernel/mmv.o ./kernel/pic.o ./kernel/process.o ./kernel/thread.o ./kernel/tss.o ./init.o -llibgcc.a
c:\Programmordner\MinGW\OSprogramming\bin\i586-elf-ld.exe: cannot find obj\init_S.o
make: *** [kernel.bin] Error 1
Weshalb sucht der Linker immer nach "init_S.o"?
Es gab vorher mal versehentlich eine so benannte Datei im Projekt, aber die ist schon lange gelöscht und sie taucht ja auch nicht in den Kommandozeilenparametern von Ld auf. Daher erschließt sich mir nicht ganz weshalb der Linker immer meint, er würde immer diese Datei brauchen.
Habt ihr eine Idee woher das kommen kann? Ich habe das Gefühl das ich ziemlich auf den Schlauch stehe.