arm-none-eabi 和 arm-linux-gnueabi 有什么区别?我知道如何使用它们的区别(一种用于裸机软件,另一种用于在 Linux 上运行的软件)。但技术背景是什么?
我发现 ABI 存在差异,据我所知,它类似于 API,但在二进制级别上。它确保不同应用程序的互操作性。
但我真的不明白拥有或不拥有操作系统会以何种方式影响我的工具链。我唯一想到的是,在编译裸机软件时,库可能必须静态链接(是吗?),因为没有操作系统动态提供它们。
我发现与此主题相关的大多数页面仅回答了如何使用工具链,但没有回答技术背景。我是机电一体化专业的学生,并且是嵌入式系统的新手,因此我在该领域的经验有些有限。
也许这个link https://wiki-archive.linaro.org/WorkingGroups/ToolChain/FAQ#What_is_the_differences_between_.2BIBw-arm-none-eabi-.2BIB0_and_.2BIBw-arm-linux-gnueabihf.2BIB0.3F_Can_I_use_.2BIBw-arm-linux-gnueabihf.2BIB0_tool_chain_in_bare-metal_environment.3F_How_do_you_know_which_toolchain_binary_to_use_where.3F描述会有所帮助。
可能最大的区别是:
“裸机 ABI 将采用与 Linux ABI(假定 glibc)不同的 C 库(例如 newlib,甚至没有 C 库)。因此,编译器可能会根据它认为上面可用的内容进行不同的函数调用超越标准 C 库。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)