关于Makefile的简单运用
当在 l i n u x 下编写多文件的工程时,如果使用gcc x.c xx.c xxx.c -o xxxx将会很麻烦,特别是当程序中出现了某种错误的时候,可以通过makefile 来集中修改,集中编译。
这个是1.c 文件
这个是2.c文件
这个是Makefile文件,里面Target是目标文件名也就是编译过后想要运行时的文件名
Object是依赖文件,并且是.o文件
第四行"冒号"交代了归属关系
第五行开始输入命令前一定要打一个Tab键,一定一定。后面就按照普通的编译方法进行编译。
----------------------------------------------------------------------------------------------------------------------------
想讲讲为什么是用.o文件,或者说.o文件究竟是什么。
编译器对代码进行编译需要四个过程
预处理:#include 语句所包含的内容替换掉语句本身
所有已定义的宏被展开
根据#ifdef , #if等语句的条件是否诚成立取舍相关部分
具体编译方法就是 gcc -E a.c -o a.i
编译:编译器对源代码进行词法和语法的分析,优化等操作最后生成的汇编代码,这是整个过程中最重要的一步
编译方法:gcc -S a.c -o a.s
汇编:利用汇编器对汇编代码进行处理,生成机器语言代码。
编译方法: gcc -c a.c -o a.o
当多文件同时编译时,只有先生成.o 文件,才能进行下一步的链接操作,这就是Object为什么要用.o 文件了
最后一步,链接:把各个模块之间相互引用的部分处理好
编译方法:gcc -o a a.c
例如要用到printf,就要让链接器并入printf.o,得到a 文件,变成可执行目标文件