arm-none-eabi和arm-linux-gnueabi有什么区别?我知道它们的使用方式不同(一个用于裸机软件,另一个用于在Linux上运行的软件),但是技术背景是什么?
我看到ABI有所区别,根据我理解,这类似于二进制级别的API。它确保了不同应用程序之间的互操作性。但是我不太明白有没有操作系统对我的工具链产生影响。唯一想到的是,在编译裸机软件时,库可能必须静态链接(是吗?),因为没有操作系统动态提供它们。
我找到的大多数与此主题相关的页面只回答了如何使用工具链而不是技术背景。我是机电一体化专业的学生,对嵌入式系统还比较陌生。
我看到ABI有所区别,根据我理解,这类似于二进制级别的API。它确保了不同应用程序之间的互操作性。但是我不太明白有没有操作系统对我的工具链产生影响。唯一想到的是,在编译裸机软件时,库可能必须静态链接(是吗?),因为没有操作系统动态提供它们。
我找到的大多数与此主题相关的页面只回答了如何使用工具链而不是技术背景。我是机电一体化专业的学生,对嵌入式系统还比较陌生。
memcpy
等),gcc可能会调用它们(例如在分配structs
时)。 - too honest for this sitearm-none-*
默认是一个自由实现,因此它不依赖于C标准库(用于托管系统),并且gcc不会为某些标准库函数使用其内置的优化。 - too honest for this sitelibgcc
,而是C标准库的实现,例如newlib或glibc。libgcc
很难避免,但当然,您可以在自己的库中实现其功能(虽然我认为这没有太多意义,因为它没有外部依赖项且是特定于目标的)。 - too honest for this site