2016-08-20 221 views
5

我正在關注本教程:https://littleosbook.github.io/#linking-the-kernel如何在Mac OS X上創建ELF可執行文件?

我在Mac上。我正在創建一個從nasm創建的目標文件,我想用ld將它變成一個ELF可執行文件。 Mac上的ld看起來不像它支持的ELF格式,但我不想用Ubuntu來運行虛擬機只是爲了執行此鏈接步驟。

是否可以在Mac上安裝GNU ld並與Mac的ld一起運行?

+0

取出您的輸出並運行「file -f 」並查看它說的是什麼。我使用「鏗鏘main.s -mllvm -x86-asm-syntax = intel -o main」,這給了我「Mach-O 64位可執行文件x86_64」 –

+0

我認爲這是一個錯誤,因爲它不知道什麼與一個ELF文件:「file -f loader.o」給了我「無法打開ELF」(沒有這樣的文件或目錄)「 – cstack

+0

如果你正在認真研究OS/X上的自定義32位操作系統開發,我會至少推薦你可能要考慮創建一個交叉編譯器。 –

回答

4

是的,你可以。 ld是GNU binutils的一部分。你可以建立並安裝如下:

wget -nc https://ftp.gnu.org/gnu/binutils/binutils-2.27.tar.gz 
tar xzf binutils-2.27.tar.gz 
cd binutils-2.27 
mkdir build && cd build 
../configure --prefix=${HOME}/.local/binutils --target=i386-unknown-linux-gnu 
make -j7 
make install 

用於安裝LD到~/.local/binutils/bin/ld。如果你想要一個64位的binutils,使用--target=x86_64-unknown-linux-gnu

相關問題