大家好,欢迎来到IT知识分享网。
一、什么是编译器?
二、编译器预处理功能


行末数字标准含义:
‘1’表示新的文件开始;‘2’表示返回到一个文件;‘3’表示以下文件来自系统头文件;‘4’表示下面的文件应该被包装在extern “C”块中。
三、编译有哪些功能?
3.1 编译器功能:
⚫1、词法分析:分析关键字,标识符,立即数的合法性;
⚫2、语法分析:检查代码是否遵循C语言语法规则;
⚫3、语义分析:分析表达式是否合法;

3.2 汇编:
汇编过程调用主要对汇编代码进行处理,生成处理器能识别的指令,保存在后缀名为.o的目标文件中。

3.3 链接:
链接阶段的目的是将目标文件及链接库(eg:.so及.a etc)通过链接器形成可执行文件。gcc test.o -o test

链接:
链接阶段的目的是将目标文件及链接库(eg:.so及.a etc)通过链接器形成可执行文件。
1、普通链接:运行时,将所有的代码库.o文件,一次性拷贝到内存中,如果运行多个副本,那么相同的代码库会各自占用一部分内存,这些内存中存储的东西是一样的。
2、静态链接:出于节省内存的考虑,我们可以将相同的代码封装到静态库中,那么多个副本运行时,只加载一份静态库即可,这样相对于普通链接来说节省内存,内存消耗比动态链接多。
3、动态链接:程序运行开始的时候只加载必要的模块,当开始调用某一动态链接库时,采取寻找并加载动态链接库到内存中,节省内存但是运行效率慢。
3.3.1 静态链接:
3.1.2 动态链接:
3.4 程序编译生成可执行文件过程分为四个步骤:

3.5 configure
3.6 make

下面列举了所有GNU make 3.80版的参数定义。其它版本和产商的make大同小异,不过其它产商的make的具体参数还是请参考各自的产品文档。
-C <dir>, –directory=<dir>
指定读取makefile的目录。如果有多个“-C”参数,make的解释是后面的路径以前面的作为相对路径,并以最后的目录作为被指定目录。如:“make -C ~hchen/test -C prog”等价于“make -C ~hchen/test/prog”。
-f=<file>, –file=<file>, –makefile=<file>
指定需要执行的makefile。

可以是一个object file(目标文件),也可以是一个执行文件,还可以是一个标签。
prerequisites:
生成该target所依赖的文件和/或target
command:
该target要执行的命令(任意的shell命令)
target这一个或多个的目标文件依赖于prerequisites中的文件,其生成的规则定义在command中。
prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。
示例
3.6.1 make是如何工作的?
makefile中使用变量

在Makefile使用include 关键字可以把别的Makefile包含进来,被包含的文件会原模原样的放在当前文件的包含位置。include 的语法是:
四、GNU编译器
五、Intel编译器
六、 PGI编译器
七、其它x86编译器

在官网下载源码放在家目录下


一般都会有简单的安装说明,编译参数的介绍或者注意事项(比如依赖的其他软件)
另外在预编译之前可以用
./configure–help
查看编译选项的说明

开始编译并安装编译好的文件
某些软件支持并行编译可以在make命令后面加–j参数指定编译的进程数比如make-j8

如果编译顺利完成,进入到指定的安装路径一般会有如下目录(每个软件不一样)

创建环境变量文件并加载以使用新安装的软件
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/112073.html







3.3 链接:






四、GNU编译器
六、 PGI编译器
七、其它x86编译器


