RK3399环境搭建----glibc2.29编译

2023-05-16

硬件:firefly-RK3399-JD4

软件:ubuntu18.04

需求:在RK3399开发板上进行在线调试。

调试需要用到GDB,之前拿到的gdb运行的时候报错:

 提示libm.so.6缺少GLIBC_2.29.

看了一下我拿到的gdb,里面确实有两个函数用到了GLIBC_2.29

 

 而我本地的libm.so.6最高支持GLIBC_2.27

怎么办呢,首先想到的就是更新一下GLIBC到2.29版本,但是GLIBC无法通过apt-get install进行安装,只能下载源码进行make install 。

于是下了2.29的glibc代码

tar -zxvf glibc-2.29.tar.gz
cd glibc-2.23
mkdir build
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make

然而很快就报错了。

 搜了半天在/usr/include/aarch64-linux-gnu/asm里面找到了unistd.h,但是为啥编译的时候找不到呢,看build下生成的config.make文件:

defines = 
sysheaders = /usr/include
sysincludes = -nostdinc -isystem /usr/lib/gcc/aarch64-linux-gnu/7/include -isystem /usr/lib/gcc/aarch64-linux-gnu/7/include-fixed -isystem /usr/include
c++-sysincludes =  -isystem /usr/include/c++/7 -isystem /usr/include/aarch64-linux-gnu/c++/7 -isystem /usr/include/c++/7/backward
c++-cstdlib-header = /usr/include/c++/7/cstdlib
c++-cmath-header = /usr/include/c++/7/cmath
c++-bits-std_abs-h = /usr/include/c++/7/bits/std_abs.h

这些应该就是设置include文件的,于是在sysincludes后面加上了/usr/include/aarch64-linux-gnu。果然这个错误没有了。但很快又出现了另外一个错误:

 找不到setfsuid.o,是stamp.o需要的,搜了一下stamp.o在build下每个文件夹都有,不知道是干嘛的,setfsuid搜了一下是一个syscall接口,glibc里每个syscall编出来都以.o的形式,但是又找不到对应的.c。不知道怎么产生.o的,有的syscall函数是有对应的.c的。在sysd-syscalls文件里可以看到相关的配置。为什么会产生不了呢?而且在misc下面已经产生了一下syscall对应的.o,比如seteuid.o,sbrk.o,sethostid.o,setegid.o,setreuid.o等等,为什么唯独setfsuid.o产生不了?百思不得其解!折腾了半天也没搞定。我在想如果放到x64系统上编译看看会是什么样的情况,于是找了一台Ubuntux64的机器,同样编译2.29版本,果然没有任何问题,连前面的unistd.h的错误都没有报,setfsuid.o也产生了。好奇怪,难道aarch64不行?后来发现我configure的时候用的参数有不一样的。RK3399上用的是:../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

而X64上我用的是:../configure --prefix=/usr/local/glibc

难道跟这个有关,我把两种情况下生成的config.make对比了一下。

主要的差异如下:(左边是报错的,右边是没有报错的)

 

 

 我比较怀疑是include头文件的那一部分导致,什么都不配的configure,头文件的设置是空的。

于是我又在RK3399上用../configure --prefix=/usr/local/glibc试了一下,果然编译通过了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RK3399环境搭建----glibc2.29编译 的相关文章

随机推荐

  • Android蓝牙完全学习手册

    1 前言 市面上关于Android的技术书籍很多 xff0c 几乎每本书也都会涉及到蓝牙开发 xff0c 但均是上层应用级别的 xff0c 而且篇幅也普遍短小 对于手机行业的开发者 xff0c 要进行蓝牙模块的维护 xff0c 就必须从An
  • 【高级】深入理解Word里的字号、行距、段距、间距、样式

    昨天领导交给我一份文档 xff0c 让我帮忙修改一下 改完后最后一页只有单独的一行 xff0c 打印出来不够美观 因此 xff0c 我缩小了行距 xff0c 把默认的单倍行距改为了固定值28磅 结果是 xff0c 整个文档的确少了一页 xf
  • 笔记本插上耳机后仍在外放Realtek Audio Console不支持此机器

    大年初七 xff0c 开工第一天 下午办公室新来的同事请教的如题问题 他用的华硕笔记本 xff0c 飞行堡垒FX86FE 插上华为耳机 xff0c 耳机始终播放不出来声音 显示已经检测到耳机插入了耳机孔 xff0c 点击弹窗会显示 Real
  • git Filename too long

    全局 git config global core longpaths true 当前仓库 git config core longpaths true 转载于 https www cnblogs com EasonJim p 108038
  • VxWorks入门级开发环境学习

    由于实习需要 xff0c 最近在学习VxWorks xff0c 久闻该操作系统大名 xff0c 一直被其深厚的内力震撼着从未敢去了解 xff0c 直到最近 操作系统Vxworks本身的优点特点等详细信息不多说了 xff0c 这里讲讲几天来我
  • 树莓派 Retropie 4.4中文版使用说明 含roms资源

    漫步云端服务器 http chdong top bbs http www chdong top 相关名词 Retropie Retropie可以将你的树莓派或者PC变成一台复古游戏机 Retropie基于完整的操作系统之上 xff0c 你可
  • selenium 中 css-寻找元素

    等同于 tag名 不改变 elements 61 wd find elements by css selector 39 div 39 elements 61 wd find elements by tag name 39 div 39 i
  • 解决 The following packages have unmet dependencies: 问题

    The following packages have unmet dependencies libvtk5 dev Depends libfreetype6 dev but it is not going to be installed
  • 2.1Ubuntu20.4安装QT5.14.2

    QT简介 xff1a Qt是一个跨平台的C 43 43 图形用户界面库 xff0c 我们平时所说所使用的Qt xff0c 准确的来说是它的GUI编程部分 Qt提供给应用程序开发者建立图形用户界面所需要的功能 xff0c 并且Qt很容易扩展
  • 美国出台最严技术出口管制!14项前沿科技面临封锁

    关注ITValue xff0c 查看企业级市场最新鲜 最具价值的报道 xff01 xff08 本文转载自量子位公众号 xff0c ID xff1a QbitAI xff0c 作者 xff1a 乾明 夏乙 问耕 xff09 美国又打出一套七伤
  • sftp文件上传详解

    JSch是Java Secure Channel的缩写 JSch是一个SSH2的纯Java实现 它允许你连接到一个SSH服务器 xff0c 并且可以使用端口转发 xff0c X11转发 xff0c 文件传输等 xff0c 当然你也可以集成它
  • 数据库设计 ER图

    一 E R图构成要素 E R图也称实体 联系图 Entity Relationship Diagram xff0c 提供了表示实体类型 属性和联系的方法 xff0c 用来描述现实世界的概念模型 它是描述现实世界关系概念模型的有效方法 是表示
  • ssh-keygen -t rsa详解

    ssh keygen q 安静模式 b bits 位数 t dsa ecdsa ed25519 rsa rsa1 加密算法 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 6
  • samba源码编译安装(版本4.13.0)

    目录 前言编译安装samba下载三个包安装依赖共需要安装samba gnutls nettle1 进入解压后的samba目录执行 xff1a 2 进入解压后的gnutls目录执行3 进入解压后的nettle目录执行3 1 卸载已存在nett
  • mybatis+postgresql10插入返回主键ID

    MyBatis如果使用useGeneratedKeys去生成自增列会造成不成功 xff0c 因为官方提供只支持这些数据库 xff1a mybatis generatedkeys xff0c 那么如果要用在oracle和postgresql上
  • Mac 环境下使用 homebrew 安装和彻底卸载 MySQL5.7

    一 安装 MySQL5 7 在终端执行下列命令 xff1a brew install mysql 64 5 7 使用 brew 安装好 MySQL 5 7 版本后 xff0c 此时 MySQL root 用户的密码是空的 我们需要修改一下
  • python 爬取网站首页并获取资源文件

    一 使用requests模块 xff0c 如果没有安装请使用如下命令 xff0c 安装requests模块 pip install requests 二 打开PyCharm xff0c 创建一个新的py文件 1 请求网站 xff0c 获取网
  • github pages部署静态网页

    github pages部署静态网页 如果你的项目只是一个静态网站 xff0c 就没有必要再去整什么服务器 xff0c github pages 提供了搭建静态网站的功能 xff1b 为什么使用Github Pages 1 搭建简单而且免费
  • 使用 @PostConstruct、@Bean(initMethod=“”)注解指定初始化方法 、及实现InitializingBean接口 在 Spring Bean 完成初始化后进行一些响应的操作

    如果需要在 某个特定的bean 被初始化后 xff0c 执行一些代码逻辑 xff0c 可以使用 64 PostConstruct 64 Bean xff08 initMethod 61 xff09 注解指定初始化方法 及实现Initiali
  • RK3399环境搭建----glibc2.29编译

    硬件 xff1a firefly RK3399 JD4 软件 xff1a ubuntu18 04 需求 xff1a 在RK3399开发板上进行在线调试 调试需要用到GDB xff0c 之前拿到的gdb运行的时候报错 xff1a 提示libm