交叉编译,为什么“检查我们是否正在交叉编译...否”?

jus*_*ght 5 cross-compiling binutils

我正在尝试自己编译跨平台工具链。

当我编译binutils-2.22时,它成功了,但为什么出现“检查我们是否正在交叉编译...否”?我想应该是“是”吧?

我的主机是运行ubuntu的i686,我的目标是arm。

~/telink_linux/build-tools/binutils-2.22$ ./configure --prefix=/home/shuaihan/telink_linux/tools --target=arm-linux
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... arm-unknown-linux-gnu
...
checking whether we are cross compiling... no
...
configure: creating ./config.status
config.status: creating Makefile
Run Code Online (Sandbox Code Playgroud)

之后,我“make”和“makeinstall”,创建了arm-linux-*。

谢谢!

hob*_*bbs 4

因为你没有交叉编译 binutils;你正在编译跨binutils。如果您正在编译 ARM binutils以在 ARM 上运行,或者如果您正在编译 ARM binutils 以在第三个平台(既不是 i686-linux 也不是 arm-linux)上运行,那么该消息将显示“yes”。

  • 这是旧的,但有一个未列出的警告:Linux 支持 `binfmt_misc`,这使得该测试在实际交叉编译时失败;例如,如果系统配置为通过 Wine 运行 .exe 文件而无需显式调用 wine,那么 Linux 系统上的 `./configure --target=x86_64-w64-ming32` 有时会对交叉编译检查说“不” 。要解决这个问题,请通过强制不运行来绕过检查:`./configure --host=$(./config.guess) --target=x86_64-w64-mingw32`。 (3认同)