4

我正在 OS X 上构建 x86_64-elf 内核。我的构建系统是 autotools。我成功编译 gcc 以在 OS X 上为 x86_64-elf 进行交叉编译。当我运行从 autotools 生成的配置脚本时,我遇到了一个问题:

configure: error: C compiler cannot create executables
See `config.log' for more details

所以我查看 config.log 并查看:

cannot find crt0.o: No such file or directory
collect2: error: ld returned 1 exit status

这很有意义。交叉编译器不会生成可执行文件,因为没有关联的运行时。但我不需要或不希望我的编译器生成可执行文件,我将为我的引导加载程序适当地链接它。我如何告诉 autotools 不要检查这个?

4

2 回答 2

3

确保在运行配置脚本时指定以下 gcc 标志(将它们添加到 CFLAGS 环境变量):

-nostdlib -nostartfiles -nodefaultlibs -ffreestanding

如果您不知道如何将这些附加到 CFLAGS 的末尾,请尝试以下操作:

export CFLAGS=$CFLAGS -nostdlib -nostartfiles -nodefaultlibs -ffreestanding
于 2013-08-05T00:17:17.083 回答
0

尝试:

DARWIN_VERSION_FULL=darwin`uname -r`
./configure --build=x86_64-apple-${DARWIN_VERSION_FULL} --host=x86_64-unknown-linux

现在configure应该处于交叉编译模式,并停止运行该测试。

于 2012-04-12T19:27:48.160 回答