【问题标题】:How to create an ELF executable on Mac OS X?如何在 Mac OS X 上创建 ELF 可执行文件?
【发布时间】:2016-12-27 19:52:33
【问题描述】:

我正在关注本教程:https://littleosbook.github.io/#linking-the-kernel

我在 Mac 上。我现在有一个从nasm 创建的目标文件,我想使用ld 将它变成一个ELF 可执行文件。 mac 上的ld 看起来不支持 ELF 格式,但我不想为了做这个链接步骤而用 Ubuntu 运行虚拟机。

是否可以在 Mac 上安装 GNU ld 并与 Mac 的 ld 一起运行?

【问题讨论】:

  • 获取您的输出并运行“file -f ”并查看它的内容。我使用“clang main.s -mllvm --x86-asm-syntax=intel -o main”,这给了我“Mach-O 64-bit executable x86_64”
  • 我认为这引发了错误,因为它不知道如何处理 ELF 文件:“file -f loader.o”给了我“无法打开 `ELF'(没有这样的文件或目录)"
  • 如果您正在认真研究 OS/X 上的自定义 32 位操作系统开发,我将建议您至少考虑创建一个交叉编译器。

标签: macos nasm ld elf


【解决方案1】:

是的,你可以。 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    相关资源
    最近更新 更多