2011-06-19 64 views
0

我想成立一​​個工作環境,根據該頁面組裝一個引導程序和編譯和鏈接一個簡單的內核:enter link description here迷你OS:鏈接的編譯和組裝.o文件

到目前爲止,一切都很順利,但是我似乎無法來解決這個連接錯誤:

C:\Users\----\Desktop\>ld -T linker.ld -o kernel.bin --oformat binary loader.o kernel.o 
ld: cannot perform PE operations on non PE output file 'kernel.bin'. 

的LD手冊是在我看來太神祕了,不給這個特殊的錯誤消息的任何答案。

(我使用的是Windows 7 64位)

+0

在Windows上編譯內核雖然不是不可能。 – 2011-06-19 21:52:25

+0

已編譯。我的問題在於鏈接過程。 – Janx

+0

鏈接是編譯過程的一部分,它是我提到的「地獄」一詞的實際部分。 :) – 2011-06-19 21:58:53

回答

0

我經歷了一些OSDev文章了,但是在Linux機器上。首先,我應該指出序言的第二句說明你應該在Windows機器上設置GCC Cross Compiler。但我相信你的錯誤關於PE輸出文件與如何爲Windows和Linux配置ld有關。 Linux使用ELF格式作爲可執行文件,而Windows使用PE格式。這是表示程序/可執行文件的兩種非常不同的方式。對於OSDev教程,您需要以ELF格式鏈接內核。

如果您按照關於設置GCC交叉編譯器的文章,您應該參閱構建'binutils'一節。確保你的目標設置爲i586-elf。繼續閱讀文章,您應該能夠設置鏈接器ld以鏈接到ELF目標而不是PE格式。

+0

也可以用戶DJGPP utils。 DJGPP工具包包含如ld86,as86和gcc等有用的程序:-)當然,它們正在進行交叉編譯。 –