gcc可以在没有交叉编译的情况下为Arm生成二进制文件吗

Can gcc produce binary for Arm without cross compilation

我们能否在 intel x64 架构上配置 gcc 运行 以通过仅将一些标志传递给 gcc 而不使用交叉编译器来为 ARM 芯片生成二进制文件。

简短:没有

编译器: gcc 不是本机交叉编译器,必须在编译 gcc 时指定目标体系结构。 (有些例外情况适用,例如可以同时支持 x86 和 x86_64)

clang 将是一个本地交叉编译器,您可以通过传递 -target=arm-linux-gnu 为 arm 生成代码,但您仍然无法生成二进制文件,因为您需要一个链接器和一个 C-图书馆也是。意味着您可以 运行 clang -target=arm-linux-gnu -c <your file> 并编译 C/C++ 代码(可能需要将其指向您的 C/C++ 包含路径)——但您不能构建二进制文件。

工具链的其余部分: 您还需要一个合适的链接器和工具链,两者都是特定于您想要 运行 at.

的架构 和 OS

可能的解决方案: 获取合适的工具链,或编译自己的工具链。对于 arm linux 你有 for ex。 CrossToolchains 如果您使用的是 debian,对于准系统,您可以从 codesourcery 获得交叉编译器。

既然你说的很含糊,不可能给你更明确的答案