【发布时间】:2012-04-12 14:16:02
【问题描述】:
我正在 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 不要检查这个?
【问题讨论】:
-
你不能在
configure.ac脚本中设置CC变量吗?但是它可能不起作用,因为其他测试可能会创建脚本尝试运行的可执行文件。 -
我在运行configure时设置了CC变量,在configure.ac中设置它真的很糟糕。无论如何,这并不能回答我如何让它停止检查编译器是否可以创建可执行文件的问题。
-
告诉 configure 你正在交叉编译。使用
./configure --host=x86_64-unknown-linux。如果构建类型与主机类型不同,则可能会跳过某些测试。 -
我正在这样做,--host=x86_64-elf,它仍然失败。
标签: cross-compiling autotools osdev