arm-none-eabi和arm-linux-gnueabi之间的区别?

arm-none-eabi和arm-linux-gnueabi有什么区别?我知道如何使用它们的区别(一个用于裸机软件,另一个用于软件意味着在linux上运行).但技术背景是什么?

我看到ABI有一个不同之处,据我所知,它类似于API,但在二进制级别上.它确保了不同应用程序的互操作性.

但我真的不明白有没有操作系统会影响我的工具链.我唯一想到的是,在编译裸机软件时,库可能必须静态链接(它们是什么?),因为没有动态提供它们的操作系统.

我找到的与此toppic相关的大多数页面都回答了如何使用工具链而不是技术背景.我是机电一体化和嵌入式系统新手的学生,所以我在这个领域的经验有点受限.

解决方法:

也许这个link的描述会有所帮助.

可能是最大的区别:

“裸机ABI将假设一个不同的C库(例如newlib,甚至没有C库)到Linux ABI(假设glibc).因此,编译器可能会根据它认为上面提供的内容进行不同的函数调用.超越标准C库.“

上一篇:-mfloat-abi=softfp的问题,指定fpu为neon


下一篇:C ABI如何处理RVO和NRVO?