Firefly开源社区

打印 上一主题 下一主题

[Linux] Liunx SDK中gcc交叉编译工具链的GLIBC版本高于ubuntu根系统库GLIBC版本

11

积分

0

威望

0

贡献

技术小白

积分
11

Liunx SDK中gcc交叉编译工具链的GLIBC版本高于ubuntu根系统库GLIBC版本

发表于 2023-4-13 19:59:13      浏览:6270 | 回复:9        打印      只看该作者   [复制链接] 楼主
  • 固件类型: 自行编译的固件
  • SDK包名称: rk3588_linux_release_20230403_v1.0.6f
  • SDK更新到哪个COMMIT: 0000-00-00 00:00:00
  • 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版本



log.txt

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

回复

使用道具 举报

2129

积分

20

威望

24

贡献

中级创客

Rank: 4

积分
2129
发表于 2023-4-14 09:11:27        只看该作者  沙发
电脑apt安装一个低版本的交叉编译器就行,不要用sdk里的
回复

使用道具 举报

11

积分

0

威望

0

贡献

技术小白

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

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

使用道具 举报

2129

积分

20

威望

24

贡献

中级创客

Rank: 4

积分
2129
发表于 2023-4-14 11:09:11        只看该作者  地板
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,板子上比它新呀


回复

使用道具 举报

11

积分

0

威望

0

贡献

技术小白

积分
11
发表于 2023-4-14 14:26:14        只看该作者  5#
本帖最后由 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”。
回复

使用道具 举报

2129

积分

20

威望

24

贡献

中级创客

Rank: 4

积分
2129
发表于 2023-4-14 15:10:36        只看该作者  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 不好嘛


回复

使用道具 举报

11

积分

0

威望

0

贡献

技术小白

积分
11
发表于 2023-4-14 15:32:33        只看该作者  7#
Liuth 发表于 2023-4-14 15:10
没错哦,我感觉是你下载的编译器有问题

果然和我下载的编译器有关,我换了gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu就行了
回复

使用道具 举报

3

积分

0

威望

0

贡献

吃瓜的群众

积分
3
发表于 2023-4-17 11:38:50        只看该作者  8#
Liuth 发表于 2023-4-14 15:10
没错哦,我感觉是你下载的编译器有问题

问题是交叉编译工具链里面的glibc版本高于板子上的。。。。。
回复

使用道具 举报

2129

积分

20

威望

24

贡献

中级创客

Rank: 4

积分
2129
发表于 2023-4-17 14:20:02        只看该作者  9#
halolzx 发表于 2023-4-17 11:38
问题是交叉编译工具链里面的glibc版本高于板子上的。。。。。

SDK里的交叉编译工具是用来编译kernel等,做固件用
你开发应用程序就需要根据你的目标系统来选择另外合适的版本
回复

使用道具 举报

20

积分

0

威望

0

贡献

技术小白

积分
20
发表于 2024-7-31 16:08:45        只看该作者  10#
新人请教一下如何升级目标板上的GLIBC?也是本地编译好挪过去?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表