导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    如何编译glibc库

    其它全志芯片讨论区
    2
    2
    1829
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • zznzzn
      zznzzn LV 6 最后由 编辑

      如题,如何在工业HMI上编译glibc库

      1 条回复 最后回复 回复 引用 分享 0
      • livpo
        livpo LV 6 最后由 编辑

        遵循以下步骤

        make工具

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

        74adce60b8464885a5dd61ee74ba04ce.jpg

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

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

        9a2c99382e9f410f972896bb8d835d60.jpg

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

        76462bc8ce8843c18851fb1b53ae6006.jpg

        glibc源码下载

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

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

        723697d50e5f4f1cbdb57e159e694c80.jpg

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

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

        8b1ebd6d70be4655a7605128bee7fec2.jpg

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

        5f2a16b347c3456080fa730db1f7da2d.jpg

        03eea564b5674b67a048d0ee1cd5bee7.jpg

        运行env.sh脚本

        env.sh

        ./env.sh
        

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

        98a88fec90ff4c018cf4421fae808ac2.jpg

        b994e54444474d3997fb351db376c330.jpg

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

        7d8beda4939c4dcb94d694b343f93d5e.jpg

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

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

        strings main | grep glibc
        

        4e72c23a5e7646189ca264b87f0ef8b4.jpg

        版本匹配问题

        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编译通过,其他版本需测试。

        1 条回复 最后回复 回复 引用 分享 0
        • 1 / 1
        • First post
          Last post

        Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

        行为准则 | 用户协议 | 隐私权政策