0

我使用 arm-non-eabi-gcc 作为交叉编译器。

我在 Eclipse 中创建了一个简单的 hello world 程序。

我可以使用 arm-non-eabi-gcc 编译程序,并且 helloworld.out[arm/le] 文件正在生成,但我无法运行它,因为它只能在 arm 上运行,而不能在 windows x86-64 上运行。

我知道我可以使用 cygwin 或 mingw 来编译代码,我将能够轻松地在 Windows 上运行该程序,但是,我只想使用 arm-non-eabi-gcc 作为交叉编译器。

我想知道如何使用 arm-non-eabi-gcc 作为交叉编译器,或者我需要在我的 make 文件或 eclise 工具链设置中包含哪些标志,并创建一个可以在 windows x86-64 上轻松运行的 elf 文件.

注意:生成的二进制文件将始终在 Windows 上运行,而不是任何 arm 系统,只是我的项目工作区有其他使用 arm-none-eabi-gcc 的项目,所以我想使用相同的,我不想要 cygwin 或 mingw。

我的完整工作区和其他项目很容易移动,因为我将 arm-non-eabi-gcc exe 保存在项目目录中。使用 cygwin 或 mingw 可以轻松编译和运行二进制文件,但我们需要在更改系统时安装它们。

任何指导或帮助将不胜感激。

谢谢你。

4

1 回答 1

0

交叉编译器的全部意义在于制作不会在当前系统上本地运行的可执行文件。要么使用模拟器,要么不使用交叉编译器。

与 clang 不同,GCC 没有像-target x86-64-windows. 您arm-none-eabi-gcc只能制作ARM 二进制文件。

所以我想问这个问题并没有什么坏处,但这里的答案是一个明确而明显的“否”,你设置了所有约束,比如不使用模拟器,以及使用只能生成 ARM 二进制文件的编译器。

如果您想要可执行文件,您可以在 x86-64 Windows 上运行,在您的 IDE 之外构建它们(例如在命令行上使用一个简单的 Makefile),或者以不同于您 IDE 中的交叉编译项目的方式配置该项目。

于 2021-09-27T16:30:31.050 回答