q631951221 发表于 2014-12-16 10:38

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-16 23:05

本帖最后由 arm-linux-gcc 于 2014-12-18 10:08 编辑

glibc的代码看起来太乱了,可以看android的Bionic C,比较干净清爽

另外glib和glibc不是同一个东西

Tinnal 发表于 2014-12-17 21:43

arm-linux-gcc 发表于 2014-12-16 23:05 static/image/common/back.gif
glibc的代码看起来太乱了,可以看android的bionic,比较干净清爽

can agree more!

如果想了解C库需要干什么事情,请看bionic。

glibc为了支持太多的系统、为了支持太多的版本,并且存在极多的条件编译,极差的文档,极差的编码风格。代码糟糕透顶,不适合研究。

q631951221 发表于 2014-12-18 21:13

回复 3# Tinnal


    多谢回答,这个c运行库可以在x86上运行吗?

q631951221 发表于 2014-12-18 21:13

回复 2# arm-linux-gcc


    多谢回答,我先搜搜看。

Tinnal 发表于 2014-12-19 14:16

q631951221 发表于 2014-12-18 21:13 static/image/common/back.gif
回复 3# Tinnal




对于一般的嵌入式应用,应该是没有问题的。但如果你想构建一个桌面发行版,不是老老实实glibc吧。
页: [1]
查看完整版本: glib源码和系统调用的几个问题