2

我正在使用运行嵌入式 linux 内核的 ARM 嵌入式系统 (ARM9)。内核是用 GCC 4.5.x 和 eglibc 编译的。运行使用 GCC 4.8.x 或更高版本使用 glibc 编译代码的二进制文件是否有任何危害。

我已经读到,出于稳定性原因,您不应该混合和匹配 libc。但据我了解,它们都与 ABI 兼容,所以它们不应该有任何问题。

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

4

1 回答 1

1

内核使用 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 接口。

于 2016-12-07T03:36:30.320 回答