例如。手臂未知-Linux的gnueabi 现在,一旦操作系统即Linux被修复,C库将被修复(GLibc),因此将遵循调用约定和遵循的ABI。第4场即ABI的要求是什么?工具链是否可以使用与底层操作系统和LIBC使用的ABI不同的ABI。在这种情况下,由所述工具链编译的库如何在OS上运行?
答案 0 :(得分:4)
这或多或少是历史原因的问题,a.k.a the holy wars about the sacred operating system's name。你称之为"工具链名称"实际上被称为Target Triplet,正如它所暗示的那样,它有三个字段,而不是更多或更少。在您的示例中,字段为:
ln -s /cygdrive/c/ /c
arm
unknown
参考我已经面临的另一个参考示例:linux-gnueabi
,用于hobbyist operating system development:
i686-elf-gcc
i686-elf
(隐含)unknown
(隐式;编译器实际上是freestanding cross compiler,用于开发operating system kernels,因此它输出的代码不需要底层操作系统,因为输出代码是操作系统本身!)。这只是一个混乱的问题,因为字段可能(和做)使用none
字符,用于分隔字段。在您的情况下,操作系统被认为是-
,也称为使用Embedded ARM ABI的Linux内核的GNU操作系统。 Linux内核has historically been one of the most portable pieces of software in the world,所以它可以移植到其他ARM ABI,尽管我只知道EABI ......