俺啥也不懂-不知道什么时候才会编写操作系统-再写Hello World-第一版makefile
哈哈,估计没有人执行过代码,有些地方是编译不过去的,不过不解释了
继续看第二版的makefile:
outputFilePath=/usr/local/myAll/output/huibian/
OBJ = $(outputFilePath)lesson1.o
TARGET=$(outputFilePath)main
RM = rm -f
$(TARGET):$(OBJ)
gcc -g -o $@ $<
$(OBJ):$(outputFilePath)%.o:%.asm
nasm -f elf64 -g $< -o $@
clean:
rm -f $(TARGET) $(outputFilePath)*.o
之所以要讲makefile,就是需要编译的文件多了,不好办。
例如下面这个,文件还不算多,但是执行一个make命令就可以编译完成,还是挺酷的
稍微说一下:
1、等号前面是变量名,后面是值,这个不用多讲
2、冒号前面的是生成后的结果,后面的是依据,$(TARGET):$(OBJ)翻译过来大概就是根据lesson1.o生成main文件
3、前面说过makefile是按照顺序执行的,除非碰到依赖,这里的target依赖obj生成,obj根据asm生成,所以执行make的时候,$(OBJ):$(outputFilePath)%.o:%.asm这一行先执行
4、这里之所以写成gcc编译,是因为一开始学习gdb编译,这里还可以使用ld链接。
5、$@代表冒号前面的文件,$<代表冒号后面的文件,这个理解很不专业,但是能一下子就看明白