假设您有一个交叉编译工具链,可以为 ARM 架构生成二进制文件。
你的工具链是这样的(在Linux的X86_64机器上运行):
...以及大量其他用于 ARM 上交叉编译的工具。
我感兴趣的点是:
-mabi
,可以是“apcs-gnu”、“atpcs”、“aapcs”、“aapcs-linux”和“iwmmxt”之一。您可以在线查看GCC ARM选项。
我最近启动了一个小项目,在裸机环境中使用 Linux 标准 C 库。我已经在我的博客上描述过它:http://ellcc.org/blog/?page_id=289
基本上我所做的就是建立一种处理 Linux 系统调用的方法,以便通过实现某些系统调用的简化版本,我可以使用标准库中的函数。例如,ARM 的当前状态实现了
read()
、readv()
、write()
、writev()
和 brk()
的简化版本。这使我可以不变地使用 printf()
、fgets()
和 malloc()
。
就我而言,我使用相同的编译器来针对 Linux 和裸机。由于它是基于 Clang/LLVM 的,因此我还可以使用相同的编译器来定位其他处理器。我现在正在为 MIPS 开发一个裸机示例。
所以我想答案是没有任何区别。