2016-08-20 185 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

相关问题