[Linux]在源代码数量优化中统计源文件数量,目标文件数量的一点作用
这个shell脚本的功能是统计当前目录下子目录里*.c,*.h的数量,统计编 译生成*.o的数量,以及当前目录名:
root@jason:/j# cat temp.sh
clear;
rm temp.txt
paths=`ls`
for path in $paths
do
if [ -d "$path" ]; then
cd $path
ch=`find -name "*\.[ch]" | wc -l`
o=`find -name "*\.o" | wc -l`
cd ..
echo "$ch $o $path" >>temp.txt
fi
done
cat temp.txt | sort -n
rm temp.txt
clear;
rm temp.txtpaths=`ls`
for path in $paths
doif [ -d "$path" ]; thencd $pathch=`find -name "*\.[ch]" | wc -l`o=`find -name "*\.o" | wc -l`cd ..echo "$ch $o $path" >>temp.txtfi
donecat temp.txt | sort -n
rm temp.txt
比如,在当前根目录执行的效果:
比如第一列是h,c文件的数量,第二列是.o的数量,第三列是文件夹名,为啥要把第一列这样放呢,主要是为了排序,使用sort命令,这样方便查看结果。
看到前两列,心里会大概对于当前目录是否有优化的空间心里有点数。
比如,这里一看,drivers感觉有相当大的操作空间,sound目录也是,fs 也不错等等,同样子目录也是一样的。
相反的如果操作virt目录,block目录,io_uring目录,感觉就是浪费生命。
这样就可以通过每个目录的Kconfig,Makefile文件中对应的目录参数进行是否编译修改,验证自己的想法对不对,注意,有些目录虽然里边不编译目标文件,但是在内核层编译或者链接,或者其他操作是会依赖到的,这里要小心,而且有的依赖比较隐晦。
在实际的操作中,会发现很多,比如自己的电脑根本就没用到AMD的任何驱动,但是你把AMD代码目录删除,就会报错这类问题,在目录的Kconfig也会对一些模块进行依赖,还有些是源代码的头文件依赖,也有些是函数中代码对其他产品的源代码有依赖,这些有很多看起来不太规范。
如果自己的代码基本功比较好的话,可以从源代码级修改,但是由于代码 量比较大,这样操作有点难度。
还有一些问题,比如在编译时不会暴露出来,但是在链接,或者生成符号 表的时候会暴露出来问题等等.
感谢阅读,个人一点观点,不一定对。