makefile知识点01

来源:互联网 发布:excel制作数据录入窗体 编辑:程序博客网 时间:2024/06/15 20:18
1.

Makefile 文件里面

用 :=,表示变量赋值的时候立刻展开。

用 =,表示变量被用的时候才展开。


?= 是条件赋值, 比如

foo ?= $(bar)

只有当foo变量还没有被定义的时候,才会将bar的值赋给foo。


 “+=”   :变量值追加

      eg:   

        objects = main.o foo.o bar.o utils.o
        objects += another.o




3.set -e命令设置当前Shell进程为这样的状态:如果它执行的任何一条命令的退出状态非零则立刻终止,不再执行后续命令.


4fneq和ifeq条件语句,在这些语句块中是不能用自动变量的($@,$^,$<),另外要make clean的话不需要构建依赖文件



5.

如果make执行的命令前面加了@字符,则不显示命令本身而只显示它的结果; Android中会定义某个变量等于@,例如 hide:= @

通常make执行的命令如果出错(该命令的退出状态非0)就立刻终止,不再执行后续命令,但如果命令前面加了-号,即使这条命令出错,make也会继续执行后续命令。

通常rm命令和mkdir命令前面要加-号,因为rm要删除的文件可能不存在,mkdir要创建的目录可能已存在,这两个命令都有可能出错,但这种错误是应该忽略的


6.

1、先了解程序从无到有的过程,即编译到执行。

(图片的引用来自互联网)

下面用实例来演示整个过程。

以一个.c文件来演示吧,这里只谈讨编译到运行的过程,不讨论编码的复杂度。

add.c

[cpp] view plaincopy
  1. #include "stdio.h"  
  2.   
  3. int add(int x,int y){  
  4.      return x+y;  
  5. }  
  6.   
  7. void main()  
  8. {  
  9.       int c;  
  10.       c = add(20,30);  
  11.       printf("%d",c);  
  12. }  


 

(1)先将源文件进行预编译产生.i文件

使用GCC的-E参数。

gcc -E -c add.c -o add.i

可以使用cat add.i来查看.i中的内容,内容太多我就不贴了。

cat -n add.i

(2)通过.i文件来产生汇编文件.s

gcc -S add.i


(3)通过.s文件生成.o文件(目标连接文件,即中间文件)

gcc  -c add.s

(4)通过.o文件连接成最终的执行文件。

gcc add.o -o add

(5)最后执行生成的可执行文件。

./add

 


0 0
原创粉丝点击