任何 ARM 处理器的工具链都可以用于编译任何操作系统吗?工具链对操作系统的依赖是什么?
我的问题可能听起来微不足道……我对 ARM 的工具链一无所知。
任何 Arm 处理器的工具链都可以用于编译任何操作系统吗?
这取决于目标操作系统。如果它支持 ARM 架构(例如 Linux),那么只缺少配置和补丁,但通常是的。
工具链对操作系统的依赖是什么?
我只在GCC方面有经验,所以我会说binutils,glibc + kernel headers然后GCC。如果你想要线程,你也需要 pthreads。
请参阅这篇文章,了解如何在 ARM 上引导 Linux。虽然它相当古老,但同样的过程也适用,并带有适当的补丁。
您可能想查看BuildRoot以构建针对 Arm 和其他处理器的工具链。
有许多跨平台编译器可用,甚至许多版本的 gcc 还提供...要为 arm 编译内核,您需要获取交叉编译器并更改内核文件夹的顶级 Makefile 例如:ARCH = arm 和 CROSS_COMPILE = arm-linux- , CROSS_COMPILE 参数取决于你保存 gcc-cross-platform 工具的位置......
这里 ARCH 代表建筑
一般来说,没有。该工具链具有依赖于系统 libC 库的编译器库,这些库来自操作系统(除非您正在为没有操作系统的小型“裸机”系统进行编译,在这种情况下它们来自其他地方)。
因此,使用给定工具链编译的程序只能在具有兼容 libC 的系统上运行。例如,如果您有一个用于基于 ARM GlibC 的系统的工具链,它可以为使用 GlibC 的标准 ARM Linux 系统编译程序,但不适用于使用 uClibc 的 ARM uClinux 系统或 ARM 裸机系统使用新库。
还有一些其他的小依赖(我不太熟悉),但这是最大的依赖。