当前位置: 技术问答>linux和unix
用source insight阅读内核源代码问题请教?
来源: 互联网 发布时间:2017-01-24
本文导语: 查看内核源代码或u-boot源代码时,由于硬件支持问题,一个变量可能在多个文件中定义。用SI看代码是要找到正确的定义找半天,非常不适合我这样的新手学习,不知道各位有什么高招?求指教! | ...
查看内核源代码或u-boot源代码时,由于硬件支持问题,一个变量可能在多个文件中定义。用SI看代码是要找到正确的定义找半天,非常不适合我这样的新手学习,不知道各位有什么高招?求指教!
|
一般每个架构都是分目录的,直接把整个目录删掉,只保留比如x86的文件夹。 然后再建工程。 一般只需要花半个小时就能找出来。比如我看apache的源代码,就直接弄了个脚本来删除。可以参考下。
4 files="bs2000 win32 beos prefork winnt netware mpmt_os2 os2 tpf aix os390"
5
6 for file in $files
7 do
8 rmfiles=`find . -name $file`
9 echo "rm -rf $rmfiles"
10 echo "############################"
11 rm -rf $rmfiles
12 done
4 files="bs2000 win32 beos prefork winnt netware mpmt_os2 os2 tpf aix os390"
5
6 for file in $files
7 do
8 rmfiles=`find . -name $file`
9 echo "rm -rf $rmfiles"
10 echo "############################"
11 rm -rf $rmfiles
12 done
|
结合你的硬件平台来确定变量的定义。
另外,不仅仅看代码,也要参考其它资料,了解整个架构以及代码的组织,这样才能更好地理解。
--无论是内核还是u-boot,还是其它项目代码。
另外,不仅仅看代码,也要参考其它资料,了解整个架构以及代码的组织,这样才能更好地理解。
--无论是内核还是u-boot,还是其它项目代码。
|
确实存在一个变量或结构体在多个地方有定义的情况
需要依靠程序员根据具体的cpu体系结构区分,这是驱动程序员的基本要求
此外 ,如果实在搞不定找不到,在.c源码开头位置自己定义这个变量或结构体,编译内核就会报错,错误信息会告诉你真正的定义位置
需要依靠程序员根据具体的cpu体系结构区分,这是驱动程序员的基本要求
此外 ,如果实在搞不定找不到,在.c源码开头位置自己定义这个变量或结构体,编译内核就会报错,错误信息会告诉你真正的定义位置
|
我理解,所找到的每个定义都是有用的,无法说那个是正确的定义;因为无法知道,当前文件会与哪些包含定义的文件联系或链接在一起。
明白了这一点,我想应该在某个MAKEFILE的作用范围内(还要去掉条件编译的情况),找原始定义的出处;SI有这样的功能吗?或者我们可以自己编写宏来实现这个功能吗?
明白了这一点,我想应该在某个MAKEFILE的作用范围内(还要去掉条件编译的情况),找原始定义的出处;SI有这样的功能吗?或者我们可以自己编写宏来实现这个功能吗?
|
编译下,有中间文件 .o的就是你所要的。
|
在工程中把不相关硬件平台的文件夹和文件移除。
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。