编译与链接、库、make
0.人写的程序变为二进制程序的过程:
①源程序.cpp→(编译compile,配置include)→②目标文件.obj/.o→(链接link,拼接起来所有零散的文件)→③可执行二进制文件.exe / a.out
1.编译与链接
编译:自定义头文件的搜索路径
链接:设库的搜索路径
2.动态库与静态库
1.静态库:
①.a
(Linux,archive)
②.lib
(Windows)
2.动态库:
① .so
(Linux,shared object)
② .dll
(Windows,Dynamic linked library)
3.区别
主要在于代码被载入的时刻不同:
静态库是在编译链接期被链接到可执行文件中,运行时不在需要该静态库,因此体积比较大。
动态库是在程序运行时才被载入,因此程序运行时候依赖动态库,体积比较小。
/动态库是为了解决静态库的缺点而产生的。
好文:https://blog.csdn.net/weixin_41754258/article/details/124186826
3.Makefile、make、cmake、qmake
从事于linux下的C++开发的人员都知道,在C++下编写程序是没有类似windows下编译器的一键编译和运行的按钮,只能由我们开发人员进行手动编译、运行;为了减免这种繁琐而且复杂的劳动力,出现了makefile文件,makefile文件可以帮助我们很快的编译大量文件,最终形成可执行文件;其实编写makefile文件并不是很复杂,但是后面出现了cmake,这个可以直接帮我们写makefile文件,我们只需要编写cmake文件即可;
①刚开始:在linux环境下,对于预处理、编译、汇编、链接这4步,每一步都需要输入gcc -参数
命令来执行。如果文件很多就要都输上。非常麻烦。
②为了解决这个麻烦,出现了Makefile文件。Makefile文件就是,把上述4步的命令都写进去,在外面只需要执行一步make命令就行了。
③但是后面为了更偷懒,连Makefile文件里的4步命令行都不想写了。又发明出了cmake命令,可以帮程序员自动生成Makefile文件,在外面需要执行一步cmake命令就行了。
④cmake在Qt中的变种为qmake
Makefile:用来一下子执行完 预处理、编译、汇编、链接 命令的
make:是来执行Makefile文件的
cmake:用于生成Makefile文件。比qmake更复杂而多功能
qmake:cmake在Qt下的变种,是Qt的自动生成Makefile的
3.1qmake
根据实际环境创建项目文件.pro 并且运行qmake生成适当的Makefile
构建
构建是增量编译,只编译有变化部分
构建该文件:crtl+alt +B
重新构建
是把所有部分都重新编译
运行
有改动则根据已有的Makefile进行编译
,执行构建和重新构建时如果没有Makefile,会根据.pro文件等生成Makefile后再编译
所以运行顺序应该是:qmake-构建-运行
C语言程序开发流程如下:
相关文章
- TextView添加链接
- 复制”链接文件“到虚拟机(VirtualBox)的”共享文件夹“时报错:创建符号链接时报错:只读文件系统
- destoon下动态链接301到伪静态(ngnix)
- sql server 2012远程链接的方法及步骤
- 《Sqlserver》Javaweb项目链接sqlserver 2008R2时出现的一系列的错误
- 【更新链接】U盘启动制作工具(UDTOOL) v3.0.2014.0427
- 泛微OA e-cology8 数据库链接
- php 生成迅雷快车旋风链接
- SAP Cloud for Customer的跳转链接制作navigation link
- 从四个问题透析Linux下C++编译&链接
- C语言预处理编译链接各个阶段错误,分阶段的说一下
- C++学习第一节:深入编译链接和运行
- lvgl在VS2019编译链接出错问题