用glibc编译并运行用eglibc编译的内核

时间:2016-12-02 02:47:09

标签: gcc gnu glibc eglibc

我正在使用运行嵌入式Linux内核的ARM嵌入式系统(ARM9)。内核使用eglibc与GCC 4.5.x一起编译。 运行二进制文件是否有任何损害,使用GCC 4.8.x或更新的编译代码使用glibc。

我已经读过你不要因为稳定性原因而混淆和匹配libc。但据我所知,它们都兼容ABI,因此不应该有任何问题。

我使用的一些代码要求STD11正确编译,因此我不能使用GCC4.5。

1 个答案:

答案 0 :(得分:1)

  

使用eglibc

使用GCC 4.5.x编译内核

内核构建不使用GLIBC,因此与用于构建内核的libc(不)完全无关。

  

运行二进制文件是否有任何损害,它是GCC 4.8.x或更新的使用glibc的编译代码。

没有

  

当二进制链接libc时会发生什么?它在交叉编译时与glibc相关联,但会链接到sysroot中的eglibc。

通常,GLIBC和EGLIBC保证向后兼容性:即,与GLIBC-x.y链接的二进制文件对任何不早于x.y的GLIBC都可以正常运行。

EGLIBC与GLIBC的偏差非常小。 EGLIBC允许禁用某些功能。如果在运行时它找到不早于xy的GLIBC(GLIBC将具有二进制文件不会使用的功能)( IF EGLIBC实际上禁用了某些功能),那么链接到EGLIBC-xy的二进制文件将运行正常),但这是正常的:二进制文件很少使用每个 GLIBC接口。

相关问题