使用ct-ng构建的RPi工具链libm.so.6兼容性问题咨询
GLIBC版本兼容问题解答
环境信息
自定义工具链的libm.so.6包含的GLIBC版本:
GLIBC_2.17 GLIBC_2.18 GLIBC_2.23 GLIBC_2.24 GLIBC_2.25 GLIBC_2.27 GLIBC_2.28 GLIBC_2.29 GLIBC_2.31 GLIBC_PRIVATE
目标树莓派的libm.so.6包含的GLIBC版本:
GLIBC_2.17 GLIBC_2.18 GLIBC_2.23 GLIBC_2.24 GLIBC_2.25 GLIBC_2.27 GLIBC_2.28 GLIBC_2.29 GLIBC_2.31 GLIBC_2.32 GLIBC_2.35 GLIBC_PRIVATE
核心结论
使用基于GLIBC 2.31构建的工具链编译程序,在搭载GLIBC 2.35的目标树莓派上可以安全运行,不存在兼容性问题。
具体版本要求说明
GLIBC遵循向下兼容的版本规则,具体要求如下:
- 只要目标系统的GLIBC最高版本不低于编译工具链所依赖的最高GLIBC版本,程序就能正常运行
- 无需版本完全一致,也不需要目标版本和工具链的最高版本精准匹配
- 若目标系统的GLIBC最高版本低于编译时依赖的版本,程序会因找不到对应符号而启动失败
你的场景中,工具链依赖的最高GLIBC版本是2.31,目标系统为2.35,满足2.31 ≤ 2.35的条件,因此程序可正常运行。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

