【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

对于交叉工具链来说,uclibc一般都是包括在工具链里面的。通过uclibc,大家可以像开发x86用户程序一样,开发其他cpu上的应用程序。uclibc相比较glibc而言,包含的文件较少,功能也有删减,且每一个目录代表一个动态库,阅读起来基本不会遇到什么问题。

1、uclibc的代码怎么看?

建议直接在github上找一个uclibc来看,比如https://github.com/klee/klee-uclibc

2、uclibc看什么?

建议前期看ld.so和libc.so的源代码,后期可以看其他动态库的代码

3、ld.so和libc.so作用是什么?

ld.so主要负责动态库加载、.got.plt填充,libc.so主要负责内存分配、signal、字符处理等函数

4、ld.so、libc.so是用户程序吗?

和hello_world一样,所有资源依赖于syscall

5、ld.so、libc.so和syscall有什么关系?

ld.so和libc.so可能用到syscall,也可能用不到

比如malloc中的内存分配肯定用到syscall,但是strlen没有用到

此外,一个动态库api可能涉及到几个syscall,这都是有可能的

6、ld.so、libc.so和kernel是怎么交互的

首先execve执行函数,交给ld.so之后,继续完成剩下的工作,接着跳到libc.so里面的main函数

如果在用户app里面发现其他动态库函数,则ld负责.got.plt加载工作

7、一个完整程序需要哪些工具的配合?

首先链接器负责.got.plt、.plt创建

接着操作系统负责fork、execve、open、read、write操作、主要是将文件读到内存,同时将参数传给加载器

最后加载器完成可执行文件的执行工作

8、static链接时,是不是就用不到uclibc了?

不是,static链接时,ld.so、libc.so等动态库里面的函数就全部留在执行文件里面了,这一点可以通过反汇编可以看的出来

9、uclibc为什么要和kernel共享一些数据结构?

kernel需要在用户syscall的时候得处理一些数据,这些数据格式必须保持一致

10、了解uclibc的好处是什么?

克服对嵌入式的畏惧,调试软件更加得心应手

ps:

gcc交叉工具链一般要编译两遍,就是一次不支持动态库。待用第一次编译得到的gcc编译uclibc之后,再编译一次支持动态库的gcc。

随想录(uclibc的学习)相关推荐

  1. 随想录(ros学习笔记)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] ros,全称robot operating system.说它是操作系统,其实也不全对,因为它实 ...

  2. 随想录(zynq学习)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 最近学习zynq较多,这里做一个笔记,供日后参考使用.zynq是xilinx公司出的一款soc, ...

  3. 随想录(英语学习的几个误区)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 学技术的人,最好英文水平好一点.但凡有点深度的文档,都离不开英文.想要寻找好一点的资料,最好go ...

  4. 随想录(如何学习内核)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 很多学习linux kernel的同学都会陷入到一个误区当中.一方面,他们希望自己学习的东西大而 ...

  5. 随想录(matlab学习)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 读研究生的时候,虽然专业是图像处理相关的内容,但是用matlab的机会本身其实不多.当时自己认 ...

  6. 随想录(canvas学习)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 不管什么编程语言,gui编程除了控件这块,一般来说都有canvas方面的内容.开发过程如果用户需 ...

  7. 数据结构与算法--螺旋矩阵

    题目:给你一个正整数 n ,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix .(来源:https://leetcode-cn.com/pro ...

  8. 随想录(学习《许式伟的架构课》)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 市面上关于软件架构的课程大概有这么几种, 1.设计模式类,比如<设计模式>.< ...

  9. 随想录(redis的学习和使用)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 很早就听说过redis,但是却没有好好使用过.记得读书的时候,大家用的比较多的是微软的acces ...

最新文章

  1. python-34:极视界爬虫总结
  2. (chap3 数据链路) 介质型网络
  3. Python struct与小端存储
  4. 语言模型微调领域有哪些最新进展?一文详解最新趋势
  5. 【Mybatis】分割字符串
  6. django-orm补课-使用shell-新增一行-再增一行-查找行-修改行
  7. 百度推出挖掘机自动驾驶技术:操作不输蓝翔
  8. delphi--csv,txt文本转换成excel .
  9. 2022-01-11总结(补)
  10. git学习笔记(2)
  11. vue x 兼容iphone_【前端vue系列】初始化一个vue工程
  12. eclipse上安装并配置tomcat
  13. 第七周作业-任务分解
  14. 制作u盘winpe启动盘_如何下载优启通U盘启动盘制作工具并制作启动盘?
  15. 关闭windows Defender的自动扫描
  16. Android权限Uri.parse的详细资料
  17. 如何注册企业邮箱,联系人邮箱是什么?
  18. 太完美 TWM000极度精简版XP20130123终结美化版
  19. div设置为可获取焦点并且判断是否已获取焦点的方法
  20. python分数约分_python分数的四则运算

热门文章

  1. Bash Shell 注释多行的几种方法(转)
  2. 《数据分析实战 基于EXCEL和SPSS系列工具的实践》一3.2 用“逐步推进法”推测需要的数据...
  3. Fatal error: Maximum function nesting level of '100' reached, aborting!
  4. JS实现:鼠标悬停图片,图片由彩色变为灰色
  5. 网线(水晶头)制作流程 请附件下载
  6. GTD时间管理系统入门
  7. Linux系列-Red Hat5平台下的DHCP服务搭建
  8. LOJ#6284. 数列分块入门 8
  9. CSS 实现行内和上下自适应的几种方法
  10. iOS之NSURLConnection详解(2)