Firefly开源社区

标题: Liunx SDK中gcc交叉编译工具链的GLIBC版本高于ubuntu根系统库GLIBC版本 [打印本页]

作者: wx__eSTcMo    时间: 2023-4-13 19:59
标题: Liunx SDK中gcc交叉编译工具链的GLIBC版本高于ubuntu根系统库GLIBC版本
版本信息:
Linux_SDK: rk3588_linux_release_20230403_v1.0.6f,Ubuntu根系统: Ubuntu20.04-Gnome_RK3588_v2.40_20230330.img

OS:         Ubuntu 20.04.6 LTS
MODEL:         Firefly ROC-RK3588S-PC V12 MIPI(Linux)
FIREFLY: v2.40
DATE:         20230330
KERNEL:         Linux version 5.10.110 (xuehao@xuehao-Z370-HD3) (kernel commit id: 651e97e43b12) (sdk version: rk3588_linux_release_20230403_v1.0.6f) (aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 10.3.1 20210621, GNU ld (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 2.36.1.20210621) #1 SMP Thu Apr 13 14:47:27 CST 2023


问题描述:
用Linux SDK下prebuilts目录下gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu的工具链编译的可执行文件无法在板端ubuntu下执行,抛

“./benchmark.out: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./benchmark.out)“,怀疑工具链的GLIBC版本高于ubuntu根系统库的GLIBC版本导致可执行文件无法执行。
故执行以下命令查看工具链中glibc的支持版本



查看板端ubuntu系统库支持GLIBC版本



tchip_askquestions

log.txt

695 Bytes, 下载次数: 0, 下载积分: 灯泡 -1 , 经验 -1


作者: Liuth    时间: 2023-4-14 09:11
电脑apt安装一个低版本的交叉编译器就行,不要用sdk里的
作者: wx__eSTcMo    时间: 2023-4-14 09:22
本帖最后由 wx__eSTcMo 于 2023-4-14 09:24 编辑
Liuth 发表于 2023-4-14 09:11
电脑apt安装一个低版本的交叉编译器就行,不要用sdk里的

但是这样就没法用rk sdk提供的模块库了,例如npu,rga等,
因为rk那些模块预编译库是用高版本gcc编译的,用低版本的gcc编译链接会报GLIBCXX符号未定义

作者: Liuth    时间: 2023-4-14 11:09
wx__eSTcMo 发表于 2023-4-14 09:22
但是这样就没法用rk sdk提供的模块库了,例如npu,rga等,
因为rk那些模块预编译库是用高版本gcc编译的 ...

怎么会呢,我用7.5版本的编译器能正常编译呀


预编译的库比如librknnrt.so,版本是GLIBCXX_3.4.21
然而板子上是GLIBCXX_3.4.28,板子上比它新呀



作者: wx__eSTcMo    时间: 2023-4-14 14:26
本帖最后由 wx__eSTcMo 于 2023-4-14 14:40 编辑



这是我自己用gcc-9.2编译npu的examples,链接librknnrt.so抛错,GLIBCXX_3.4版本太高了,但用sdk里面提供的gcc-10.3的编译器,examples编译能通过,但是到板子上又抛libc.so.6: version `GLIBC_2.33' not found

所以最好官方是不是更新下ubuntu根系统啊,保证系统glic,glibcxx这些和Linux SDK提供的gcc-10.3的工具链匹配。

现在用Linux SDK提供的gcc-10.3的工具链编译的可执行文件在板端抛“GLIBC_2.33 not found”,用自己下载的低版本的工具链例如gcc-9.2编译的可执行文件虽然在板端执行没问题,在链接rk npu的librknnrt.so又抛“undefined reference to xxx@GLIBCXX_3.4”。

作者: Liuth    时间: 2023-4-14 15:10
wx__eSTcMo 发表于 2023-4-14 14:26
这是我自己用gcc-9.2编译npu的examples,链接librknnrt.so抛错,GLIBCXX_3.4版本太高了,但用sdk里面提 ...

没错哦,我感觉是你下载的编译器有问题


本来就是设计好的,就是为了避免GLIBC的问题,所以维基推荐,host PC的环境是Ubuntu18, 板子的环境是 ubuntu20
用ubuntu18给ubuntu20来编译东西是不会出现版本太高的问题哈
所以用ubuntu18 apt装的默认gcc 7.5 不好嘛



作者: wx__eSTcMo    时间: 2023-4-14 15:32
Liuth 发表于 2023-4-14 15:10
没错哦,我感觉是你下载的编译器有问题

果然和我下载的编译器有关,我换了gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu就行了
作者: halolzx    时间: 2023-4-17 11:38
Liuth 发表于 2023-4-14 15:10
没错哦,我感觉是你下载的编译器有问题

问题是交叉编译工具链里面的glibc版本高于板子上的。。。。。
作者: Liuth    时间: 2023-4-17 14:20
halolzx 发表于 2023-4-17 11:38
问题是交叉编译工具链里面的glibc版本高于板子上的。。。。。

SDK里的交叉编译工具是用来编译kernel等,做固件用
你开发应用程序就需要根据你的目标系统来选择另外合适的版本
作者: zengqj    时间: 2024-7-31 16:08
新人请教一下如何升级目标板上的GLIBC?也是本地编译好挪过去?




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1