固件类型:自行编译的固件
SDK包名称:rk3588_linux_release_20230403_v1.0.6f
SDK修改内容:无
Log日志:log.txt
版本信息:
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)
Liuth
April 14, 2023, 1:11am
2
电脑apt安装一个低版本的交叉编译器就行,不要用sdk里的
本帖最后由 wx__eSTcMo 于 2023-4-14 09:24 编辑
Liuth 发表于 2023-4-14 09:11
电脑apt安装一个低版本的交叉编译器就行,不要用sdk里的
但是这样就没法用rk sdk提供的模块库了,例如npu,rga等,
因为rk那些模块预编译库是用高版本gcc编译的,用低版本的gcc编译链接会报GLIBCXX符号未定义
Liuth
April 14, 2023, 3:09am
4
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: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
April 14, 2023, 7:10am
6
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 不好嘛
Liuth 发表于 2023-4-14 15:10
没错哦,我感觉是你下载的编译器有问题
果然和我下载的编译器有关,我换了gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu就行了
Liuth 发表于 2023-4-14 15:10
没错哦,我感觉是你下载的编译器有问题
问题是交叉编译工具链里面的glibc版本高于板子上的。。。。。
Liuth
April 17, 2023, 6:20am
9
halolzx 发表于 2023-4-17 11:38
问题是交叉编译工具链里面的glibc版本高于板子上的。。。。。
SDK里的交叉编译工具是用来编译kernel等,做固件用
你开发应用程序就需要根据你的目标系统来选择另外合适的版本
zengqj
July 31, 2024, 8:08am
10
新人请教一下如何升级目标板上的GLIBC?也是本地编译好挪过去?