使用全志方案遇到glibc库版本低以及编译报错的解决方法
  EN8RstcYnW4n 2023年11月02日 67 0

Glibc 包含了linux一些主要的C库,用于分配内存、搜索目录、打开关闭文件、读写文件、字串处理、模式匹配、数学计算等,在遇到glibc库版本低编译还报错的情况时,遵循以下步骤解决

参考文章:如何编译glibc库

make工具

注意由于AW服务器make版本为3.8.1,在编译glibc高版本时候不兼容,所以需要更新make工具。假如服务器make版本较高,可以不用更新make工具。

在这里插入图片描述

网址 http://ftp.gnu.org/pub/gnu/make ,下载最新版本4.3。解压后,对make工具进行安装。进入make-4.3源码目录,执行以下命令。

# prefix 后面路径为make工具安装路径,这里我们指定安装到out目录下。
./configure --prefix=${path}
make 
make install

在这里插入图片描述

安装完成,我们看到make 4.3版本

在这里插入图片描述

glibc源码下载

网址 http://ftp.gnu.org/pub/gnu/glibc/ ,下载所需的glibc版本,注意gcc工具链版本和glibc版本需要匹配。

如下图所示是准备好编译脚本env. sh,glibc各个版本源码。

在这里插入图片描述

env.sh是把所有编译步骤整合在一起的脚本,可以根据具体情况单独执行每条指令。

打开脚本env.sh脚本。第4行是gcc位置,第5行是make工具位置(不需要安装高版本make可以去掉),第7行是glibc版本,第12行是glibc源码路径,第13行是glibc生成库文件路径,第14行是glibc编译过程产生中间文件存放路径,第16行是修改环境变量,使用我们自己的make和gcc工具。第30-33行,用于编译glibc。

在这里插入图片描述

其中31行 --host=arm-none-linux-gnueabihf ,host填入值要和gcc匹配 ,否则会出差。

在这里插入图片描述

在这里插入图片描述

运行env.sh脚本

env.sh

./env.sh

注意下信息,我们可以看到glibc生成准备环境时候,已经使用了我们指定gcc工具链,make工具。

在这里插入图片描述

在这里插入图片描述

编译完成后,我们看到对应so库

在这里插入图片描述

替换glibc,例如在我们测试demo,修改Makefile,指定到我们glibc版本路径即可

重新编译,查看对应执行文件,看到已经使用对应版本版本glibc库

strings main | grep glibc

在这里插入图片描述

版本匹配问题

1、gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi版本,glibc 2.29以下版本都可以编译通过

2、gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf版本,目前只在glibc 2.33编译通过,其他版本需测试。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  bWLIE0wKp9lo   2024年05月31日   89   0   0 Linux硬件
EN8RstcYnW4n