我正在使用运行嵌入式 linux 内核的 ARM 嵌入式系统 (ARM9)。内核是用 GCC 4.5.x 和 eglibc 编译的。运行使用 GCC 4.8.x 或更高版本使用 glibc 编译代码的二进制文件是否有任何危害。
我已经读到,出于稳定性原因,您不应该混合和匹配 libc。但据我了解,它们都与 ABI 兼容,所以它们不应该有任何问题。
我正在使用的一些代码需要 STD11 才能正确编译,因此我不能使用 GCC4.5。
内核使用 GCC 4.5.x 和 eglibc 编译
内核构建不使用 GLIBC,因此 libc 用于(不)用于构建内核完全无关紧要。
运行使用 GCC 4.8.x 或更高版本使用 glibc 编译代码的二进制文件是否有任何危害。
不。
当二进制链接到 libc 时会发生什么?它在交叉编译时链接到 glibc,但将链接到 sysroot 中的 eglibc。
一般来说,GLIBC 和 EGLIBC 保证向后兼容性:也就是说,与 GLIBC-xy 链接的二进制文件将在任何不早于 xy 的 GLIBC 上运行良好
EGLIBC 与 GLIBC 的偏差非常小。EGLIBC 允许禁用某些功能。与 EGLIBC-xy 链接的二进制文件如果在运行时发现不早于 xy 的 GLIBC 将运行良好(GLIBC 将具有二进制文件不会使用的功能(如果EGLIBC 实际上禁用了某些功能),但这通常是:二进制文件很少使用每个GLIBC 接口。