OK6410A 开发板 (九) 4 buildroot-2021.02 OK6410A rootfs 中的动态链接库

发布者:JoyfulSerenade最新更新时间:2022-09-19 来源: csdn关键字:OK6410A  开发板  动态链接库 手机看文章 扫描二维码
随时随地手机看文章

rootfs中动态链接库的来源

来自于 交叉编译链


rootfs 中 libc.so.6 来源猜想

suws@ubuntu:~/ok6410/system-new/buildroot/output$ sudo find . -name libc.so.6 | xargs  ls -l 

lrwxrwxrwx 1 suws suws 12 May 30  2014 ./host/arm-buildroot-linux-gnueabi/sysroot/lib/libc.so.6 -> libc-2.18.so

lrwxrwxrwx 1 root root 12 Apr 15 15:21 ./images/rootfs/lib/libc.so.6 -> libc-2.18.so

lrwxrwxrwx 1 suws suws 12 Apr 15 15:21 ./target/lib/libc.so.6 -> libc-2.18.so

suws@ubuntu:~/ok6410/system-new/buildroot/output$ sudo find . -name libc-2.18.so   | xargs  ls -l 

-rwxr-xr-x 1 suws suws 1725220 May 30  2014 ./host/arm-buildroot-linux-gnueabi/sysroot/lib/libc-2.18.so

-rwxr-xr-x 1 root root 1271296 Apr 20 12:44 ./images/rootfs/lib/libc-2.18.so

-rwxr-xr-x 1 suws suws 1271296 Apr 20 12:44 ./target/lib/libc-2.18.so


suws@ubuntu:~/ok6410/system-new/buildroot/output$ nm ./target/lib/libc-2.18.so                                   

nm: ./target/lib/libc-2.18.so: no symbols

suws@ubuntu:~/ok6410/system-new/buildroot/output$ nm ./host/arm-buildroot-linux-gnueabi/sysroot/lib/libc-2.18.so  |grep reboot

000cc0f0 T reboot


suws@ubuntu:~/ok6410/origin-offical/arm-2014.05$ sudo find . -name libc-2.18.so   | xargs  ls -l

-rwxr-xr-x 1 suws suws 1748790 May 30  2014 ./arm-none-linux-gnueabi/libc/armv4t/lib/libc-2.18.so

-rwxr-xr-x 1 suws suws 1725220 May 30  2014 ./arm-none-linux-gnueabi/libc/lib/libc-2.18.so

-rwxr-xr-x 1 suws suws 1398636 May 30  2014 ./arm-none-linux-gnueabi/libc/thumb2/lib/libc-2.18.so


看起来 buildroot 生成的rootfs/lib 中的内容 应该是 源自于 的 ~/ok6410/origin-offical/arm-2014.05/arm-none-linux-gnueabi/libc/lib/ 


rootfs 中 libc.so.6 生成过程

在 target toolchain-external-custom 中

>>> toolchain-external-custom  Extracting

>>> toolchain-external-custom  Patching

>>> toolchain-external-custom  Configuring

>>> toolchain-external-custom  Building

>>> toolchain-external-custom  Installing to staging directory

A>>> toolchain-external-custom  Copying external toolchain sysroot to staging...

>>> toolchain-external-custom  Installing gdbinit

>>> toolchain-external-custom  Fixing libtool files

>>> toolchain-external-custom  Installing to target

B>>> toolchain-external-custom  Copying external toolchain libraries to target...


主要过程是 

A : rsync  /home/suws/ok6410/origin-offical/arm-2014.05/arm-none-linux-gnueabi/libc/ 中的 etc lib sbin usr usr/lib 到 STAGING_DIR

toolchain/toolchain-external/pkg-toolchain-external.mk 中的 TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS

toolchain/helpers.mk 中的 copy_toolchain_sysroot

B : 拷贝 STAGING_DIR 中 的 ld*.so.* libgcc_s.so.* libatomic.so.* libc.so.* libcrypt.so.* libdl.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.* libpthread.so.* libnss_files.so.* libnss_dns.so.* libmvec.so.* libanl.so.* libstdc++.so.* 到 TARGET_DIR

toolchain/toolchain-external/pkg-toolchain-external.mk 中的 TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS

toolchain/helpers.mk 中的 copy_toolchain_lib_root 

在这里插入图片描述

rootfs 中 libc.so.6 strip 过程


-rwxr-xr-x 1 suws suws 1725220 May 30  2014 ./host/arm-buildroot-linux-gnueabi/sysroot/lib/libc-2.18.so

-rwxr-xr-x 1 root root 1271296 Apr 20 12:44 ./images/rootfs/lib/libc-2.18.so


可以看到 ./images/rootfs/lib/libc-2.18.so 的大小和 ./host/arm-buildroot-linux-gnueabi/sysroot/lib/libc-2.18.so 是不一样,且 ./images/rootfs/lib/libc-2.18.so 没有调试符号 ,所以应该经过了 strip


TODO


动态链接库功能探索

编译器与libc的关系

gcc 和 libc 是互相依赖的两个软件,它们合作的方式类似 Linux 系统的 "自举"。

先在一个可以运行的带有老 libc 和 gcc 的系统上,用老 gcc 编译出一个新版本的 gcc + 老 libc

再用这个新 gcc 编译出一个新 gcc + 新 libc,再用这套东东编译整个新系统。


至于 x86上运行的的交叉arm的编译器 (会有几套glibc?)


版本

# /lib/libc.so.6 

GNU C Library (Sourcery CodeBench Lite 2014.05-29) stable release version 2.18, by Roland McGrath et al.

Copyright (C) 2013 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.

There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A

PARTICULAR PURPOSE.

Compiled by GNU CC version 4.8.3 20140320 (prerelease).

Compiled on a Linux 3.13.0 system on 2014-05-30.


$ ldd /bin/busybox 

        not a dynamic executable

busybox 是 静态链接的,那么 /bin/busybox 二进制文件 中有 reboot函数的定义

该 reboot 函数的定义来自于 arm-none-linux-gnueabi-gcc工具链(包括gcc和glibc)

关键字:OK6410A  开发板  动态链接库 引用地址:OK6410A 开发板 (九) 4 buildroot-2021.02 OK6410A rootfs 中的动态链接库

上一篇:OK6410A 开发板 (八) 6 linux-5.11 OK6410A 详细解析 从 u-boot 的 theKernel 到 linux的 start_kernel
下一篇:OK6410A 开发板 (八) 5 linux-5.11 OK6410A kernel 所有镜像的执行效果

推荐阅读最新更新时间:2024-11-04 21:14

4412开发板Linux系统编程实战-字符设备控制
在 linux 驱动中字符驱动是必须掌握的,本章主要介绍字符设备应用的程序,无论是学习了后面的知识自己写的字符驱动,还是已有的字符驱动,都需要能够写一些简单的应用程序。 即使从事 linux 驱动的工作,linux 驱动写出来之后,也需要由驱动程序员编写简单的应用进行测试的。 另外,关于驱动部分,迅为电子有专门的驱动实验教程提供给大家学习,大家有了这些基础之后再去学习底层的知识就会很容易了。 在使用手册的第八章,大家可以看到这些 c 程序也是可以在 Android 下面运行的,只不过没有图形界面。 硬件工具 4412开发板PC 机;U 盘或者 TF 卡 软件工具 Ubuntu12.04.2 以及虚拟机;Arm-
[单片机]
4412<font color='red'>开发板</font>Linux系统编程实战-字符设备控制
乐鑫 ESP32-LyraT 音频开发板可支持百度 DuerOS
电子网消息,近日,百度在深圳发布了 DuerOS 全球合作伙伴计划,作为百度合作伙伴的乐鑫科技,也携可支持 DuerOS 的 ESP32-LyraT 音频开发板首次亮相。 据悉,乐鑫软解音频开发板(ESP32-LyraT)是基于语音交互市场的开发板,使用的是乐鑫开发设计的 ESP32-WROVER 模组,模组自身包含双核处理器和 4.5MByte 内存,搭配外围极少的器件实现高集成度音频解决方案。搭配 DuerOS 可以快速开发出适合智能音响、智能故事机、智能家居等产品,极大缩短产品研发周期。 去年9月,乐鑫正式推出了 ESP32 云上芯片(Wi-Fi/BT Combo 双核 MCU)。该款芯片在产品和市场两个方面都有很大
[半导体设计/制造]
基于arm开发板四个按键控制四个灯亮
基于s5pv2410,cortex a8的四个按键每一个按键点了对应的灯 对于用汇编来编程的话不难,重点在于数据手册,电路图,管脚的看懂 直接上代码 .globl _start _start: ldr r0,=0xe0200c40 @按键控制寄存器的地址 ldr r1, bic r1,r1,#0xff @bic一次只能清8为每四位控制一个按键 bic r1,r1,#0xff 8 @把16位清为零控制四个按键为输入方式 str r1, @配置按键为输入方式 ldr r0,=0xe0200280 @led灯控制寄存器的地址 ldr r1,=0x1111 str r1, @配置led灯为输出方式 loop: @循环读取按键的值 ldr
[单片机]
U-Boot-2011.06-rc2移植到mini2440开发板
一、移植环境 u-boot版本:u-boot-2011.06-rc2 Linux版本:Ubuntu 11.04 交叉编译工具:arm-linux-gcc-4.3.2(友善之臂) 开发板:友善之臂mimi2440 CPU:s3c2440 SDRAM:64MB Nor Flash:2MB Nand Flash:128MB 网卡:DM9000 二、准备工作 1、下载u-boot-2011.06-rc2,地址:http://www.linuxidc.com/Linux/2011-07/38897.htm 2、解压u-boot到工作路径。tar -xvjf u-boot-2011.06-rc2.tar.bz2 /home/prince/wo
[单片机]
51系列单片机最小系统板开发板 加装上拉排阻
看图说话方案一 从背面钻孔,偏向中心一点点,ACC-P07一共9个孔 刮漆,插入上拉排阻,排阻上的点朝ACC方向 随便焊了,不美观 高度无所谓,不会碍到任何东西 方案二 不用钻孔 直接排阻这样躺着,9只脚对着ACC-P07焊起来就行,字朝上 上工具图 0.7mm的钻头 裹上纸套上热缩管,插入螺丝刀 也可以做个迷你电钻, 但是那个宝评论几乎每个店铺都有说同心差, 索性手动算了。 主题外的话题 IC坐换成锁紧座 可以看出锁紧座焊脚高度不够 可以把排针意外的东西都移到背面, 但是DC做移到背面不对孔, 可以改成别的方式通电。
[单片机]
51系列单片机最小系统板<font color='red'>开发板</font> 加装上拉排阻
关于STM32开发板晶振相关的问题汇总
  1、自己做了个STM32的板子,但是手里没有8M的晶振,所以就用了,12M的,但是不正常,上电之后PA15和PA14接的是两个led,PA15接的led常亮,PA14接的的led不亮,而且芯片下载程序又能下载,应该不是芯片坏的问题吧,而且不管我些什么程序进去,两个脚的状态都不变,我怀疑是电路有问题,可是我仔细检查了电路和板子,都没问题,JTAG正常使用。我用的是12M的晶振,这会有影响吗?感觉不管下什么程序进去感觉芯片好像没有运行。   答:如果使用12M的晶振,那么要修改启动文档中的关于RCC的语句。因为如果你使用库文件的话,ST的库,默认外部晶振是8M,所以如果你不修改RCC部分的语句,会造成CPU不启动,或者启动不成功。
[单片机]
开发板学习Day8:第009课 gcc和arm-linux-gcc和Makefile
第001节_gcc编译器1_gcc常用选项__gcc编译过程详解 一,gcc简介 gcc : GNU Compiler Collection 特点:功能强大、功能灵活、多平台(X86、Arm);既支持宿主的开发,又支持交叉编译。 二,gcc编译程序过程(以test.c为例) 一个CC++程序至少需要预处理(preprocessing)、编译(compilation)、汇编(assembly)、链接(linking)这四步才能称为可执行文件。下面进行详细介绍: - 预处理(Pre-Processing) 此过程主要处理C源文件中的”#ifdef”、”#include”、”#define”等预处理命令,宏定义展开,并且将i
[单片机]
<font color='red'>开发板</font>学习Day8:第009课 gcc和arm-linux-gcc和Makefile
Digi-Key推出最新BeagleBoard-xM开发板
日前,Digi-Key 宣布推出最新 1GHz 袖珍型 BeagleBoard-xM,该产品支持更大容量存储器、板载 USB 集线器以及以太网,拥有更强大的功能与更低的复杂性。凭借基于 ARM(R) 的低功耗高性能嵌入式处理器以及 BeagleBoard.org 开源创新社区的强大支持,具有创新思维的设计师、工程师、开发人员与业余爱好者将在业界掀起新一轮计算创新热潮。 BeagleBoard-xM 是嵌入式应用创新的最佳选择,可满足家庭媒体中心、车载娱乐、机器人、Web 资讯站以及数字标牌等多种理念要求。BeagleBoard-xM 配备 512MB 存储器,用户可在全负载开方式平台上平稳运行多个应用软件,其中包括
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved