您的位置:首页 > 其它

makefile知识点01

2015-07-22 11:44 274 查看
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

#include "stdio.h"  
  
int add(int x,int y){  
     return x+y;  
}  
  
void main()  
{  
      int c;  
      c = add(20,30);  
      printf("%d",c);  
}  

 

(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



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: