gcc_预处理_编译_汇编_连接

            
                         +------------------+
     		         |  gcc  -E         |
                         |----------------->|
			 |---------------------------------+
			 |  gcc                  -S        |
			 |---------------------------------------------------+
			 |  gcc                                   -c         |
			 |------------------+--------------+---------------->|
			 |--------------------------------------------------------------------------+
			 |  gcc                                                                     |
			 |------------------+--------------+-----------------+---------------------->
            .pc预编译-->.c                 译.i        汇编文件.s          二进制文件.o;.h.gch     链接成可执行文件
                         | 去注释           |词法分析      |二地址码或       |                      |
			 |宏值引入          |语法分析      |三地址码         |  静态链接.a/dll      |
			 |外部函数声明引入  |语义分析      |		     |  动态连接.so/lib     |
			 |结构体引入        |              |  		     |                      |
			 |预处理#指令查错   |              |		     |                      |
			 ---------------------------------------------------------------------------+
			 
			 
			 
			 ar:
			 打包成档案.a静态 
			$(TARGET):$(OBJ)
					@$(AR)  rv $(TARGET) $(OBJ) 
                        .c.o:
					@$(CC) $(CFLAGS) -c  $*.c $(H_INCLUDES)
			-----------------------------------------------
			 libxxx.a直接或软连接
			 很多.o打包,使用ar -t libxxx.a 查看包内文件数量
			 链接成可执行文件以后,可删除.a(对于第三方的一般经常用也不会特意删除)
			 数据段、代码段均载入可执行文件中
			 需要有头文件.h用于调用到的程序生成
			 调用的程序的编译的CFLAGS选项需要一致,否则不兼容报错等
			 USAGE:
			 A_LIBs= -L../lib -static -lxxx
			 $(CC) $(pOBJs) $(CFLAGS)  $(A_LIBs) -o $@
			 -----------------------------------------------
			 
			 
			 
			 
			 生成动态连接.so
			 gcc 1.c 2.c ....n.c $(H_INCLUDES) -fPIC -shared -o libxxx.so
			 libxxx.so直接或软连接
			 使用ld查看
			 链接成可执行文件后不可删除(相对静态生成可执行文件较小,但是寻址用到时可能会比较耗时间)
			 数据段使用到的每个程序均载入,代码段多个程序共用
			 需要有头文件.h用于调用到的程序生成
			 调用的程序的编译CFLAGS选项需要一致,否则不兼容报错等
			 USAGE:
			 SO_LIBs= -L../lib  -lxxx
			 $(CC) $(pOBJs) $(CFLAGS)  $(SO_LIBs) -o $@

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值