QQ373466062 发表于 2015-7-7 10:28:01

完整精确导入Linux Kernel u-boot到SourceInsight与Understand与SlickEdit

本帖最后由 QQ373466062 于 2015-7-7 13:07 编辑

如题,以前做有效代码行统计的时候写的一个脚本,发现改一下就可以用于:完整精确导入Linux Kernel u-boot到SourceInsight与Understand与SlickEdit。
脚本解析make过程中间产生的文件依赖关系,完整的找到所有被包含的头文件与.c文件,以及依赖的头文件。
以后还会添加Eclipse的支持。

脚本使用方法:
1. 编译kernel或者u-boot
2. 使用脚本指定编译好的kenrel或者u-boot目录,与输出目录
3. 使用即可。

下面是使用方法的GIF示例,文件很大,需要耐心等待一下(也不知道是否可以显示GIF,再打开GIF好像不会自动播放了,不知道是不是cache的缘故,大家可以到github看GIF演示):
1. 产生:


2. Source Insight使用Filelist


3. Understand使用Filelist


4. SlickEdit工程


脚本地址:
https://github.com/tonyho/Generate_Kernel_Uboot_Project_forIDE
等方便的时候再上传上来。

f1yh1347 发表于 2015-7-7 10:49:23

不错,很好的办法~~

gnocy 发表于 2015-7-7 11:41:27

好东西啊,很好办法支持顶{:victory:}{:victory:}

four_zhg 发表于 2015-7-7 11:42:58

楼主,谢了,在liux上试一下,新服务器很爽,图片打开很快,

dmzy 发表于 2015-7-7 11:43:02

MARK                        

gaojieqq123 发表于 2015-7-7 12:19:33

cool ! 必须顶.

forum 发表于 2015-7-7 19:09:10

不好用,总是提示头文件not found,而且速度很慢
而且这个不知道dts/dtsi导入

谁能做个可以把整个android编译文件导出??那才是神器

gaojieqq123 发表于 2015-7-7 21:44:24

LZ,u-boot 出问题:
Source code type is:
Header file[.h] copied number: sed: -e expression #1, char 19: unknown option to `s'
Header file[.h] copied number:
Type 2 item number: 8
Copying type 1 header file[.h], item index: cp: cannot stat `misc/sample.vpj': No such file or directory
cp: cannot stat `misc/sample.vpw': No such file or directory
sed: can't read sample.vpj: No such file or directory
sed: can't read sample.vpj: No such file or directory
sed: can't read sample.vpj: No such file or directory
sed: can't read sample.vpw: No such file or directory
mv: cannot stat `sample.vpj': No such file or directory
mv: cannot stat `sample.vpw': No such file or directory

生成的file_list有问题,分析发现 file_list应该是 include/asm-asm/...和include/asm-asm/arch-XXX/...   
但是生成的是 include/asm/...和include/asm/arch/
内核暂时没发现问题.

QQ373466062 发表于 2015-7-8 14:04:40

forum 发表于 2015-7-7 19:09
不好用,总是提示头文件not found,而且速度很慢
而且这个不知道dts/dtsi导入



多谢使用与反馈。
头文件not found,是对gcc libc中的头文件提示,所以不影响
dts/dtsi在ToDoList中
很慢,确实是的,因为做了多次verify与循环check,同时每一个编译的文件都有一个依赖文件,都需要读取一把,确实需要优化。
快慢与机器性能也有关系,同时建立project一天也不会做很多次,所以还是能够接受的。

QQ373466062 发表于 2015-7-8 14:05:00

forum 发表于 2015-7-7 19:09
不好用,总是提示头文件not found,而且速度很慢
而且这个不知道dts/dtsi导入



多谢使用与反馈。
头文件not found,是对gcc libc中的头文件提示,所以不影响
dts/dtsi在ToDoList中
很慢,确实是的,因为做了多次verify与循环check,同时每一个编译的文件都有一个依赖文件,都需要读取一把,确实需要优化。
快慢与机器性能也有关系,同时建立project一天也不会做很多次,所以还是能够接受的。

QQ373466062 发表于 2015-7-8 14:06:00

forum 发表于 2015-7-7 19:09
不好用,总是提示头文件not found,而且速度很慢
而且这个不知道dts/dtsi导入



多谢使用与反馈。
头文件not found,是对gcc libc中的头文件提示,所以不影响
dts/dtsi在ToDoList中
很慢,确实是的,因为做了多次verify与循环check,同时每一个编译的文件都有一个依赖文件,都需要读取一把,确实需要优化。
快慢与机器性能也有关系,同时建立project一天也不会做很多次,所以还是能够接受的。

QQ373466062 发表于 2015-7-8 14:15:10

gaojieqq123 发表于 2015-7-7 21:44
LZ,u-boot 出问题:
Source code type is:
Header file[.h] copied number: sed: -e expression #1,...

谢谢使用与反馈。
u-boot这边为了支持有SPL的u-boot,添加了一些特殊对应。看起来是sed命令出错了。方便将环境(u-boot)给我调试一下吗?

licheng0620 发表于 2015-7-8 14:18:52

试了,发现内核根目录下的init文件夹内*.c文件找不出来,linux内核版本3.4

brahen 发表于 2015-7-8 14:26:53

elipse应该有选项可以根据makefile导入工程的,像内核这种理论上也是可以的。我在NetBeans上试过,但是前提电脑要好,否则过程极其得卡。

QQ373466062 发表于 2015-7-8 15:13:15

brahen 发表于 2015-7-8 14:26
elipse应该有选项可以根据makefile导入工程的,像内核这种理论上也是可以的。我在NetBeans上试过,但是前提 ...

看了看确实是的,不需要这个脚本了

gaojieqq123 发表于 2015-7-8 16:15:38

QQ373466062 发表于 2015-7-8 14:15
谢谢使用与反馈。
u-boot这边为了支持有SPL的u-boot,添加了一些特殊对应。看起来是sed命令出错了。方便 ...

网盘连接:http://pan.baidu.com/s/1gdGUfPh已编译

QQ373466062 发表于 2015-7-8 16:20:34

licheng0620 发表于 2015-7-8 14:18
试了,发现内核根目录下的init文件夹内*.c文件找不出来,linux内核版本3.4

谢谢反馈。
确实存在这个问题,原因是这个目录下面没有生成.XXX.o.cmd make依赖文件,所以脚本无法找到。下次提交修复。

licheng0620 发表于 2015-7-8 16:44:39

本帖最后由 licheng0620 于 2015-7-8 16:45 编辑

QQ373466062 发表于 2015-7-8 16:20
谢谢反馈。
确实存在这个问题,原因是这个目录下面没有生成.XXX.o.cmd make依赖文件,所以脚本无法找到。 ...

手动打开这个文件夹有是有生成*.o,*.o.cmd文件的,

bbstr 发表于 2015-7-8 17:36:28

又一个新的方法,去试试看

QQ373466062 发表于 2015-7-8 18:15:22

licheng0620 发表于 2015-7-8 16:44
手动打开这个文件夹有是有生成*.o,*.o.cmd文件的,

.o.cmd确实是存在的,是写的正则表达式的问题,已经修正。

QQ373466062 发表于 2015-7-8 18:16:04

gaojieqq123 发表于 2015-7-8 16:15
网盘连接:http://pan.baidu.com/s/1gdGUfPh已编译

谢谢。已经修正提交。

jameszxj 发表于 2015-7-9 16:46:52

不错,支持一下,一直都是加入很多没用的文件,这下整个世界清爽了!

ljmdzyx 发表于 2015-7-11 23:19:25

感觉很不错啊,谢谢楼主。

bone 发表于 2015-7-12 00:27:45

mark一个,研究一下。

dmzy 发表于 2015-9-15 22:05:03

mark                                 

nfchg 发表于 2016-3-2 21:04:17

太牛了。佩服佩服。

boycn 发表于 2016-3-2 21:12:45

正需要这工具,谢谢

yinjinzhong 发表于 2016-8-16 00:23:01

使用这个脚本,在编译uboot或则kernel,使用-C参数的情况时,无法输出文件列表。

star_tale 发表于 2016-8-16 00:44:06

强帖留名,正准备用呢

sunchaosq122 发表于 2016-8-16 08:03:59

mark,谢谢

dragonlands 发表于 2016-8-23 22:37:39

谢谢分享!!!

LVmcu 发表于 2017-1-29 12:08:24

新年好!

我的uboot放在/uboot-sunxi目录下(具体路径/home/lvy/lich/uboot/uboot-sunxi)
PF_Prj_Gen.sh和getopttest.sh放在uboot目录下,cd到这个目录执行
PF_Prj_Gen.sh /home/lvy/lich/uboot/uboot-sunxi getopttest.sh /home/lvy/lich/uboot/uboot-sunxi

都是找不到命令。

请教应该怎么输入命令。

tarchen 发表于 2017-9-23 12:16:53

谢谢分享,有空搞一搞。

tarchen 发表于 2018-1-11 13:58:18

不错啊!方便看代码。
谢谢!

maimaige 发表于 2018-7-2 00:39:31

mark一下 太厉害了

nibia 发表于 2018-7-11 14:55:09

好贴顶起来

yick 发表于 2018-7-13 22:52:13

不错,很好的办法~~

czjdxs 发表于 2018-7-16 10:55:07

论坛高手如云

shunhedianzi 发表于 2018-7-18 09:53:36

学习学习

云中飞雪 发表于 2018-11-29 15:16:51

本帖最后由 云中飞雪 于 2018-11-30 07:24 编辑

Hi
        非常感谢
        楼主
        还继续跟开发吗?我导入U-Boot时遇到,如图片所示,能解决吗?
谢谢

QQ373466062 发表于 2018-11-30 13:45:11

云中飞雪 发表于 2018-11-29 15:16
Hi
        非常感谢
        楼主


看起来是还没编译过?   需要先编译uboot和kernel

云中飞雪 发表于 2018-11-30 14:39:26

QQ373466062 发表于 2018-11-30 13:45
看起来是还没编译过?   需要先编译uboot和kernel

编译了。Kernel没问题。U-boot就出现图片这样

云中飞雪 发表于 2018-11-30 14:45:36

QQ373466062 发表于 2018-11-30 13:45
看起来是还没编译过?   需要先编译uboot和kernel

云中飞雪 发表于 2018-12-3 12:19:18

能帮忙看看吗?这个太有用了

QQ373466062 发表于 2018-12-3 15:24:11

云中飞雪 发表于 2018-12-3 12:19
能帮忙看看吗?这个太有用了

抱歉,暂时时间不允许,可能需要等一段时间了。另外可以的话,你注意看看目录给定的参数(目录路径) 是否正确。也可以下载uboot官方的来编译对比看看。

云中飞雪 发表于 2018-12-4 07:25:06

QQ373466062 发表于 2018-12-3 15:24
抱歉,暂时时间不允许,可能需要等一段时间了。另外可以的话,你注意看看目录给定的参数(目录路径)...

好。谢谢

dragonlands 发表于 2019-2-17 18:00:34

楼主牛逼,昨天在知乎上看到,下载且试用了,非常棒,没想到是坛友,mobiling

HANGKONG15 发表于 2019-3-28 11:01:49

QQ373466062 发表于 2015-7-8 14:06
多谢使用与反馈。
头文件not found,是对gcc libc中的头文件提示,所以不影响
dts/dtsi在ToDoList中


如何加入 dts dtsi 文件?

imliyucai 发表于 2019-5-19 17:02:22

也有这个需求,标记一下。

我是一个大白菜 发表于 2019-8-2 10:00:35

楼主,我使用的时候发现source insight 点击Add from list 不能导入文件,我就把生成的FileList_SourceInsight.txt 里面的“/” 换成“\”,同时在每一行的前面加上绝对路径,然后就可以导入了。
非常感谢楼主提供的工具,现在看kernel代码稍微简单点了

jianbo513 发表于 2019-8-2 10:08:50

感谢楼主分享!!
页: [1]
查看完整版本: 完整精确导入Linux Kernel u-boot到SourceInsight与Understand与SlickEdit