glib源码和系统调用的几个问题
最近想分析一些系统调用的执行过程,遇到几个问题,请教各位大婶,1, 应用程序,如nginx系统调用都是使用glibc,是吧?
2,glibc会把所有的系统调用都封装吗?内核貌似有300+个系统调用
3,这些系统调用的入口一般怎么找?socket()函数的入口在是glibc-2.3.6\sysdeps\unix\sysv\linux\i386\socket.S中,
我最关心的是glibc中函数的入口在哪里找?以后分析别的系统调用就有入口了。
4,我感觉glibc只是封装了一下系统调用,但代码为什么这么复杂,理不出来思路?
5,有没有glibc源码结构方面的资料,网上貌似比较少找见
望大神们回答自己感兴趣的问题。 本帖最后由 arm-linux-gcc 于 2014-12-18 10:08 编辑
glibc的代码看起来太乱了,可以看android的Bionic C,比较干净清爽
另外glib和glibc不是同一个东西 arm-linux-gcc 发表于 2014-12-16 23:05 static/image/common/back.gif
glibc的代码看起来太乱了,可以看android的bionic,比较干净清爽
can agree more!
如果想了解C库需要干什么事情,请看bionic。
glibc为了支持太多的系统、为了支持太多的版本,并且存在极多的条件编译,极差的文档,极差的编码风格。代码糟糕透顶,不适合研究。 回复 3# Tinnal
多谢回答,这个c运行库可以在x86上运行吗? 回复 2# arm-linux-gcc
多谢回答,我先搜搜看。 q631951221 发表于 2014-12-18 21:13 static/image/common/back.gif
回复 3# Tinnal
对于一般的嵌入式应用,应该是没有问题的。但如果你想构建一个桌面发行版,不是老老实实glibc吧。
页:
[1]