1.这个文件170行。好像能够看到一些熟悉的字眼。(Makefile的最简单的规则还是要熟悉一下,不然也看不到熟悉的东西。)
cfg 在配置的时候,make cfg 这个
tgt=rom 正好满足第31条语句,又定义了一个变量,等号后面的命令保存到gencode变量中了。后面再分析。
2. 首先看一下cfg这个目标吧。毕竟是我make的第一条指令呀。
cfg:
# DO NOT DELETE
perl -i -ne 'print;exit if(/^# DO NOT DELETE/);' ../lib/libc/Makefile
perl -i -ne 'print;exit if(/^# DO NOT DELETE/);' ../lib/libm/Makefile
perl -i -ne 'print;exit if(/^# DO NOT DELETE/);' ../lib/libz/Makefile
mkdir -p ../Targets/${TARGET}/compile
cd ../Targets/${TARGET}/conf/;pmoncfg ${TARGETEL}
make -C ../Targets/${TARGET}/compile/${TARGETEL}/ depend clean
perl命令还真不熟 ,-i选项是读取文件的内容
-n:将参数当作文件读取进来,并且每次读取一行遍历文件。
-e 执行指定的命令,
-ne 就是循环读取文件的每一行,并且去执行print;exit if(/^# DO NOT DELETE/);命令
按照命令print;exit if(/^# DO NOT DELETE/);,打印出对应的内容(并不是输出到终端,而是输出到Makefile.inc文件中,执行命令的这个位置,在内存中,并不修改原文件),直到遇到DO NOT DELETE就结束了,应该是这样的。
以下内容被读取到Makefile.inc文件中来(Makefile.inc 因为执行perl而被临时修改了)。(这些Makefile中有很多变量,还需要把他们转换出来)
libm
libz
3.话不多说,先想展开,但是打脸了,先跳过一下吧。
3.1 问题来了:XMACHINE,似乎没有被定义,但是XMACHINE_ARCH应该有值(先跳过吧,找不到,唉,丢脸了。)
4. 后面几句命令
1.mkdir -p ../Targets/${TARGET}/compile
2.cd ../Targets/${TARGET}/conf/;pmoncfg ${TARGETEL}
3.make -C ../Targets/${TARGET}/compile/${TARGETEL}/ depend clean
第1句: 创建一个目录,-p可能有多层需要创建的情况
所以这个目录应该是(绝对路径):
/home/jc/3a3000_pmon/pmon-loongson3-0529-ok/Targets/Bonito3a3000_7a/compile
第2句:分号表示是两个命令,分开执行
cd /home/jc/3a3000_pmon/pmon-loongson3-0529-ok/Targets/Bonito3a3000_7a//conf
进入到这个目录中,执行以下命令
pmoncfg Bonito 变量替换,看上图第2行
第3句:
make -C ../Targets/${TARGET}/compile/${TARGETEL}/ depend clean
make -C ../Targets/Bonito3a3000_7a/compile/Bonito/ depend clean
-C(大写字母),表示切换到后面指定的目录中去执行对应的Makefile
两个目标 depend和clean
5. 打开../Targets/Bonito3a3000_7a/compile/Bonito/Makefile
这个文件有点大,打开的时候有点慢,耐心等待一下。
打开这个文件,似乎没有看到我们要的目标,但是这个文件又包含了一个Make file.inc
$S ,在当前目录退4层,回到了源代码的根目录,即:/home/jc/3a3000_pmon/pmon-loongson3-0529-ok/
6.展开项目根目录下的Makefile.inc,
又是一堆的变量。大家莫烦,我都快搞烦了。。。。。哈哈哈哈哈
其实 第3 那个地方的几个变量,在这也出现了。似乎问题也要解决了。加油
似乎看到了新的希望。下篇再更吧。