查找Kernel中编译的文件

需求:
使用SourceInsight查看源代码。要么将整个kernel的源代码添加进去,要么是需要哪个文件就添加哪个。
有没有什么办法可以将Kernel目录中编译到的.c文件统一生成一个文件,然后导入到SourceInsight去加载对应的.c文件。

我们注意到,编译kernel,如果编译了.c文件,那么在与之对应的目录下生成.o.mod.o文件。因此,可以递归索引查找kernel目录下所有的文件,将.o过滤出来,与之对应的.c文件就是我们要查找的文件,因此有了下面的python代码。


查找.o文件源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# -*- coding: utf-8 -*-
import os
all_files = []
fp = open("out_files.txt", "w+")
hit_count = 0

def filt_mod_file(file):
if os.path.splitext(file)[1] != ".mod":
temp_file = os.path.splitext(file)[0]
#print(os.path.split(temp_file)[1])
if os.path.split(temp_file)[1] != "built-in":
return True

def find_dir(rootDir):
for file in os.listdir(rootDir): # 当前目录下的文件和文件夹
path = os.path.join(rootDir, file) # Join one or more path components intelligently
if os.path.isdir(path): # 迭代查找目录下的文件
find_dir(path)
if os.path.splitext(path)[1] == ".o": # 分割路径和文件名,判断后缀为 .o 的文件
temp_path = os.path.splitext(path)[0] # 过滤 .cmd.o 和 built-in 文件
if filt_mod_file(temp_path) == True:
path = path.replace(".o", ".c") # 将 .o 的后缀改成 .c 的后缀
fp.write(path) # 将结果写入到文件中去
fp.write("\n")
global hit_count
hit_count += 1
#print(path)

if __name__ == '__main__':

#path = "Z:\\work\\xxx_project\\linux"
path = os.path.abspath(".")
find_dir(path)
fp.close()
print("hit files count: %d" %(hit_count))

Title:查找Kernel中编译的文件

Author:Victor Huang

Time:2019-03-17 / 16:03

Link:http://wowothink.com/36d4e630/

License: Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)