深入讲解GCC和Make的区别(有涉及makefile文件哟!!!)
2016-11-23 20:29
435 查看
gcc是编译器 而make不是 make是依赖于Makefile来编译多个源文件的工具 在Makefile里同样是用gcc(或者别的编译器)来编译程序.
gcc是编译一个文件,make是编译多个源文件的工程文件的工具。
make是一个命令工具,是一个解释makefile中指令的命令工具。
make就是一个gcc/g++的调度器,通过读入一个文件(默认文件名为Makefile或者makefile),执行一组以gcc/g++为主的shell命令序列。输入文件主要用来记录文件之间的依赖关系和命令执行顺序。
gcc是编译工具;
make是定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译;
也就是说make是调用gcc的。
要是好好分析过一个makefile文件就不会这么问了。
刚接触linux编程,很多概论都比较模糊,今天突然用到makefile文件,想到了make与gcc的关系。于是查阅了一些资料,在此做一个小结:
1.gcc是编译一个文件,make是编译多个源文件的工程文件的工具。
2.make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
3.make就是按照makefile脚本对整个项目的各个文件进行分别编译和链接,makefile基本上就是"目标"(target),"关连"(dependencies) 和"动作"三者所组成的脚本。makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。make除了可以做到编译和连结,也可以把如何产生文档(如manual
page, info档及 dvi 档) ,以及打包压缩都完成。
4.make 可以说是一个批处理程序,它可以自动编译多个文件。当然写好的脚本是前提。MAKE是运用GCC去编译文件的。
5.Makefile文件作为一种描述文档一般需要包含以下内容:
◆ 宏定义
◆ 源文件之间的相互依赖关系
◆ 可执行的命令
Makefile中允许使用简单的宏指代源文件及其相关编译信息,在Linux中也称宏为变量。在引用宏时只需在变量前加$符号,但值得注意的是,如果变量名的长度超过一个字符,在引用时就必须加圆括号()。
下面都是有效的宏引用:
$(CFLAGS)
$Z
$(Z)
其中最后两个引用是完全一致的。
个人总结:
gcc就是一个纯编译器
而make更牛逼些 包括了gcc
只有把makefile解决 一切ok
以上部分来源于网络,如果你对gcc和make理解要求不深的话上面的话基本可以打发你了,本人在Linux上小玩了两把gcc和make对这两个命令感觉深有体会,具体如下:
gcc就是我们熟悉的C语言编译程序,这个主要是GNU项目下产生的一个开源程序,说白了,就是告诉系统,你下面要对C的文件干嘛了,主要有两种:编译、链接。例:gcc -c hello.c 、gcc -o hello hello.o,但是我们基本一次搞定:gcc hello.c
make其实也是个程序,但是这个程序和gcc不是一个意思,他主要的工作是引导,也就是说,这个程序干什么,你是可以“要求的”,牛逼吧,所以就有了makefile这个文件,因为当你make的时候,他得首先找到makefile这个文件,才知道他要干嘛!!!而巧的是makefile这个文件里面基本写的都是gcc的命令,所以当你使用make的时候就会发现怎么和gcc最后的结果是一样的呀!!而我们一般使用make的时候,往往很多人不是自己写的makefile这个文件,导致很多人对gcc和make稀里糊涂的,以下我贴出自己写的一个makefile文件以供参考:
main: main.o haha.o sin_value.o cos_value.o
gcc -o main main.o haha.o sin_value.o cos_value.o
clean:
rm -f main *.o
#gcc和rm前面是‘tab’
#这个makefile文件是有两个作用的一个是建立一个是删除文件分别命令是:make main和make rm,当然如果你使用make那系统默认是make #main这个了~~~~
gcc是编译一个文件,make是编译多个源文件的工程文件的工具。
make是一个命令工具,是一个解释makefile中指令的命令工具。
make就是一个gcc/g++的调度器,通过读入一个文件(默认文件名为Makefile或者makefile),执行一组以gcc/g++为主的shell命令序列。输入文件主要用来记录文件之间的依赖关系和命令执行顺序。
gcc是编译工具;
make是定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译;
也就是说make是调用gcc的。
要是好好分析过一个makefile文件就不会这么问了。
刚接触linux编程,很多概论都比较模糊,今天突然用到makefile文件,想到了make与gcc的关系。于是查阅了一些资料,在此做一个小结:
1.gcc是编译一个文件,make是编译多个源文件的工程文件的工具。
2.make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
3.make就是按照makefile脚本对整个项目的各个文件进行分别编译和链接,makefile基本上就是"目标"(target),"关连"(dependencies) 和"动作"三者所组成的脚本。makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。make除了可以做到编译和连结,也可以把如何产生文档(如manual
page, info档及 dvi 档) ,以及打包压缩都完成。
4.make 可以说是一个批处理程序,它可以自动编译多个文件。当然写好的脚本是前提。MAKE是运用GCC去编译文件的。
5.Makefile文件作为一种描述文档一般需要包含以下内容:
◆ 宏定义
◆ 源文件之间的相互依赖关系
◆ 可执行的命令
Makefile中允许使用简单的宏指代源文件及其相关编译信息,在Linux中也称宏为变量。在引用宏时只需在变量前加$符号,但值得注意的是,如果变量名的长度超过一个字符,在引用时就必须加圆括号()。
下面都是有效的宏引用:
$(CFLAGS)
$Z
$(Z)
其中最后两个引用是完全一致的。
个人总结:
gcc就是一个纯编译器
而make更牛逼些 包括了gcc
只有把makefile解决 一切ok
以上部分来源于网络,如果你对gcc和make理解要求不深的话上面的话基本可以打发你了,本人在Linux上小玩了两把gcc和make对这两个命令感觉深有体会,具体如下:
gcc就是我们熟悉的C语言编译程序,这个主要是GNU项目下产生的一个开源程序,说白了,就是告诉系统,你下面要对C的文件干嘛了,主要有两种:编译、链接。例:gcc -c hello.c 、gcc -o hello hello.o,但是我们基本一次搞定:gcc hello.c
make其实也是个程序,但是这个程序和gcc不是一个意思,他主要的工作是引导,也就是说,这个程序干什么,你是可以“要求的”,牛逼吧,所以就有了makefile这个文件,因为当你make的时候,他得首先找到makefile这个文件,才知道他要干嘛!!!而巧的是makefile这个文件里面基本写的都是gcc的命令,所以当你使用make的时候就会发现怎么和gcc最后的结果是一样的呀!!而我们一般使用make的时候,往往很多人不是自己写的makefile这个文件,导致很多人对gcc和make稀里糊涂的,以下我贴出自己写的一个makefile文件以供参考:
main: main.o haha.o sin_value.o cos_value.o
gcc -o main main.o haha.o sin_value.o cos_value.o
clean:
rm -f main *.o
#gcc和rm前面是‘tab’
#这个makefile文件是有两个作用的一个是建立一个是删除文件分别命令是:make main和make rm,当然如果你使用make那系统默认是make #main这个了~~~~
相关文章推荐
- 深入讲解Go语言中函数new与make的使用和区别
- gcc MakeFile文件引用静态库与动态库的区别
- 深入理解make命令和makefile文件
- make和makefile文件讲解
- Ubuntu学习日记--Lesson10:gcc、make、makefile、cmake、cmakelists区别
- Linux GCC make文件的写法3
- Android Makefile文件中"=",":=","+=","?="的区别
- Linux GCC make文件的写法--总结版
- Linux 的make及makefile文件格式
- 深入学习Make命令和Makefile(上)
- gcc做一个静态库文件 .a .so makefile
- [ZZ]make命令与makefile文件的写法
- linux下gcc下makefile文件的编写
- make makefile 深入理解软件包的配置、编译与安装
- 深入学习Make命令和Makefile(上)(4)
- 深入讲解SpringMVC配置文件
- linux下make命令和makefile文件的编写
- Linux GCC make文件的写法3
- [Linux][Makefile]:make clean与make distclean的区别
- 一步一步写Makefile(2):shell命令,通配符*和%区别,文件路径搜索vpath VPATH