如何读懂Linux那些工具的源代码呢?比如ls 的源代码,四千多行,怎么读呀。。

icheer 发布于 2012/06/22 18:25
阅读 4K+
收藏 2
如题,如何读懂Linux那些工具的源代码呢?比如ls 的源代码,四千多行,怎么读呀。。谢谢
加载中
1
中山野鬼
中山野鬼

给楼主个建议,理论和工程的水平没到一个高度,最好不要看linux的源码。如果你想研究OS,楼上几个朋友的建议都是对的,找点非常小的OS去看看更有意义。能实用的,都不是太小,ucos已经不算小了。但也可以说已经够小了。哈。

而linux的代码,一个模块,例如你看ls,动不动会涉及N多文件,N多代码。如果你工程水平没有到系统分析的级别,最好有系统分析级别的人对你做指导,哪些代码要关注,哪些代码不需要关注。你不了解系统的架构,不了解系统的原理,一行行的读,除非这个代码是个水人写的完全线性思维(代码质量也别想有多高),否则你无法理解设计者抽象出来的东西,也就无法理解设计者具体化出现的代码含义。

中山野鬼
中山野鬼
回复 @好吧 : 多练习,多思考。每次能证明以前的自己是SB,才有真正的进步。反正我是一路认为自己是SB过来的。哈。如果你始终认为以前的你的都是对的,那么你现在和以前没有任何区别,且不谈是进步了还是后退了。。。
icheer
icheer
其实我只是想通过看那些工具的源码来提高c语言,那除了这个还有什么办法(通过linux)可以提高C语言呢
0
zkqian
zkqian
可以看下早期的代码
0
xunxun
xunxun

vim+ctags跳跳

最简单就是调试着看

因为这个都是跨平台的,真正放在一个平台中,跑得代码远没有4000行那么多

0
逝水fox
逝水fox
如果只是找某个功能实现的原理,跳着看需要的就好。要完全想清楚开发者的意图就还是一点点慢慢看比较好
0
OrionBox
OrionBox
找个早期版本。几万行那种。几个星期就看懂了。。
中山野鬼
中山野鬼
未必哦。要看楼主的内功到什么级别了。哈。。。
0
算法与编程之美
算法与编程之美
弱弱的问下,如何在fedora 下查看这些命令的源码,求指教
icheer
icheer
我转的那篇文章里一二步肯定没问题的,第三步, sudo apt-get source coreutils换成sudo yum source coreutils我猜应该就可以了吧,没试过,前不久把fedora换成ubuntu了
0
宏哥
宏哥

引用来自“中山野鬼”的答案

给楼主个建议,理论和工程的水平没到一个高度,最好不要看linux的源码。如果你想研究OS,楼上几个朋友的建议都是对的,找点非常小的OS去看看更有意义。能实用的,都不是太小,ucos已经不算小了。但也可以说已经够小了。哈。

而linux的代码,一个模块,例如你看ls,动不动会涉及N多文件,N多代码。如果你工程水平没有到系统分析的级别,最好有系统分析级别的人对你做指导,哪些代码要关注,哪些代码不需要关注。你不了解系统的架构,不了解系统的原理,一行行的读,除非这个代码是个水人写的完全线性思维(代码质量也别想有多高),否则你无法理解设计者抽象出来的东西,也就无法理解设计者具体化出现的代码含义。

非常同意

早先我自己研究Linux 内核代码的时候,用source insight 做index,光建这个index,就得一两个小时, 那个时候,不知道可以用ctags进行导航.

各种模块之间复杂的关系根本无法搞清. 最后想办法裁剪了一个专门用于分析的代码, 无法编译的,把不相关的部分全部删除,重新做index,减小index尺寸,通过比较简单的 8139的驱动, 才勉强搞明白一些. 即使这样, 还遇到很多编译器特有的 宏以及扩展等困难,举步维艰.

8139驱动,可能是内核里面最简单的.

对C语言编程, 最大的收获是来自于毕业之后,一次封闭开发, 那个时候的系统没有做太多抽象.就是简单几个函数, 每个都几千行,里面一大堆分支,只能一行行看,然后调试修改. 当时吃得好,住得好,早上还到海边跑步,非常专心. 后来练就了,写程序,根本不调试,不用编译器, 直接在editplus上写了上千行,之后再编译调试,因为太熟悉了. Unix的代码,也无法在win上编译,当时没有这么多虚拟机.

宏哥
宏哥
回复 @好吧 : 问楼上. 我现在只在极端情况下,用C.
icheer
icheer
其实我只是想通过看那些工具的源码来提高c语言,那除了这个还有什么办法(通过linux)可以提高C语言呢,谢谢
0
天国之翼
天国之翼

4000行真心不多.

我建议楼主去看C库的代码.

这个应该是你现在必须先做的.

 

0
tsl0922
tsl0922

如果C语言功底还达不到的话,还是建议LZ先从基本的开始吧,自己多写,先写些简单的程序练练,等你写得多了,对C语言库熟练点了再去看那些Linux工具源代码,这样要好点,不用看到什么方法都得去查文档。

4000行确实不多,但绝不只是4000,这4000行代码里不知又引用其它模块或类库里不止多少方法和代码。

返回顶部
顶部