-
编译概念
参考附录1、2,计算机作为一个物理存在的硬件,内部内置了很多指令集(依据架构x86、ARM…不同略有不同),CPU只能运行指令集中的指令,至于C语言、Python语言之类的,是人认识但是机器不认识的。
而指令集恰恰是机器认识,人不认识的。
将人认识机器不认识的语言(C\Python…)转变成机器认识人不认识的的指令集,这个过程就是编译。
当然,具体实现起来还要进行概念细分,在这里先这么理解。其实整个编程世界,就是各种中转工具的理解。
-
gcc
在
Linux
内,gcc
是一个C语言编译器
,可以把C语言代码编译成计算机可以执行的二进制文件。当程序只有一个源文件,就可以采用
gcc
直接编译,但是当程序很大,比如包含了几百个源文件,这时候用gcc
一个个编译就是一个愚蠢的行为了。make
就应需而生。 -
make
make命令是GNU的工程化编译工具,用于编译众多相互关联的源代码文件,以实现工程化的管理,提高开发效率。
# 常用选项 -f:指定“makefile”文件; -i:忽略命令执行返回的出错信息; -s:沉默模式,在执行之前不输出相应的命令行信息; -r:禁止使用build-in规则; -n:非执行模式,输出所有执行命令,但并不执行; -t:更新目标文件; -q:make操作将根据目标文件是否已经更新返回"0"或非"0"的状态信息; -p:输出所有宏定义和目标文件描述; -d:Debug模式,输出有关文件和检测时间的详细信息。
make
本身没有编译和链接的功能,而是用类似于批处理的方式通过调用makefile文件中用户指定的命令来进行编译和链接。 -
makefile
make
和makefile
实现一键编译大量源文件,make
就是那个一键,具体的执行过程在makefile
中写好了。makefile
是一个有格式文件,简单的工程可以人工手写,但是当工程很大时候,手写就比较麻烦了,此时就出现了Cmake
。 -
Cmake
Cmake
是一个跨平台编译工具,比make更高级。Cmake
主要是编写CMakeLists.txt
文件,用cmake
命令将CMakeLists.txt
文件转化为make
所需要的的makefile
文件。然后就可以用
make
执行makefile
来进行编译。 -
References
理解Linux编译概念make、makefile、cmake
猜你喜欢
转载自blog.csdn.net/The_Time_Runner/article/details/104652237
今日推荐
周排行