编译器和工程管理器

来源:互联网 发布:今日头条取消淘宝链接 编辑:程序博客网 时间:2024/05/21 06:17

gcc(编译器)

1、编译后的库文件:a 静态库文件

                                  so动态库文件

gcc –E hello.c >hello.i    预处理生成i文件   > 重定向

gcc –c hello.i                    hello.o

gcc –S hello.c  汇编代码  hello.s

gcc –O optimize.c –o optimize.op

-O  优化编译

有四种:O0,O1,O2,O3

注意:优化有极限;有些代码不能优化。

2、-D

例如:-Dmacro  相当于C中的#define marco

      gcc –DPI=3.1415 –o hello.out hello.c

3、-Umacro   

取消一个宏定义

4、多文件编译

gcc add.c sub.c –o main

-Idirname

gcc add.c sub.c –o main –I./tmp

-C :预处理不删除注释信息

-lm:表示连接名为“libm.a”的数学函数库

-L  指定路径          -l 指定库名

静态库:牺牲空间提高效率,难以升级

动态库:共享库

静态库的创建:(1)gcc –c hello.c  生成 hello.o

                           ( 2 ) ar acs 静态库名 目标文件1 目标文件 目标文件3

                            静态库名的表示方法:libname.a

静态库的使用:gcc –o file file.c –L. –lname

ar –t libname.a                查看库里有哪些目标文件

ar –d libname.a add.o     删除add.o 文件

ar –dv                              出错有提示

ar –xv libname.a add.o    从库中把文件提取出来

动态库的创建:gcc –shared –fPIC –o库名.so 源文件.c

动态库的使用:gcc 源文件.c ./库名.so –o 可执行文件名

-Wall                      生成所有警告信息

-Werror                    错误

-w                         不生成任何警告信息

 

 

 

工程管理器:管理多个文件

Make工程管理器也就是个“自动编译管理器”

“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile 文件的内容来执行大量的编译工作。

Makefie 是make 读入的唯一配置文件。

(默认为小写,没有小写就找大写的)

Makefile的编写规则 :在vim 中写

(1)需要由make 工具创建的目标体,通常是目标文件或可执行文件;

(2)要创建的目标体所依赖的文件;

(3)命令,这一行必须以制表符(tab)开头。

目标 :依赖文件

<TAB>  command

例如:hello:hello.c

                   gcc -o hello hello.c

           hello.o:hello.c

                  gcc -c hello.c

注意点:hello为终极目标;从下往上执行;-c 转换成目标文件

目标hello需要hello.o,所有需要由.c生成.o,才能执行。

不需执行的叫伪目标。

要执行伪代码:make clean

防止有同名文件,需要先声明:    .PHONY:clean

                                                       clean:

                                                                  rm  -f  *.o  hello.c

0 0
原创粉丝点击