ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

8.21 随笔

2022-08-21 18:01:05  阅读:163  来源: 互联网

标签:可执行文件 文件 gcc 生成 编译 8.21 随笔 hello


 

******************************************************************************************

.c   所写c源文件

进行预处理

.i    c文件替换宏,头文件包含(头文件中内容放在源文件开头)等后的文件

.ii    cpp文件替换宏,头文件包含(头文件中内容放在源文件开头)等后的文件

进行编译

.s   (将 .i 文件编译而生成的)汇编文件(可能有很多个)

进行汇编

.o   .obj 目标文件,为二进制机器代码

进行(多个文件)链接

生成可执行文件,在windows下为.exe,linux下.out

 

******************************************************************************************

所用gcc命令:

gcc -E    hello.c       -o hello.i

gcc -E     -o hello.i      hello.c    

//        效果相同顺序不敏感

//  -E编译选项表示仅进行预处理

//  -o选项表明指定输出文件名,即将hello.c预处理为hello.i

gcc -S      -o hello.s      hello.i

//  -S选项表示只激活预处理和编译,就是指把文件编译成为汇编代码 .s 汇编文件

gcc -c       -o hello.o       hello.s

//  -c选项表示激活预处理编译汇编,不链接,因此生成的是 .o 目标文件

gcc           -o hello            hello.o

//  不加选项,激活所有过程,生成可执行文件,windows下指定为无后缀也会生成 .exe 可执行文件

 

******************************************************************************************

//  其中,被执行命令的文件为何文件不重要,即:

//  gcc  -o hello  hello.xxx

//  其中xxx为o、i、s、c均能执行命令,将直接生成至被激活的最后一个状态,此处因为

//  没有加任何编译选项,生成至可执行文件 . exe

 ******************************************************************************************

 

库文件

静态库的代码在编译的过程中已经载入到可执行文件中,所以最后生成的可执行文件相对较大

动态库的代码在可执行程序运行时才载入内存,在编译过程中仅简单的引用,所以最后生成的可执行文件相对较小

静态库和动态库的最大区别是,静态库链接的时候把库直接加载到程序中,而动态库链接的时候,它只是保留接口,将动态库与程序代码独立,这样就可以提高代码的可复用度和降低程序的耦合度。

静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。

动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。

无论静态库,还是动态库,都是由.o文件创建的。因此,我们必须将源程序hello.c通过gcc先编译成.o文件

 理解不到位,粘贴一份日后看

 

标签:可执行文件,文件,gcc,生成,编译,8.21,随笔,hello
来源: https://www.cnblogs.com/Willard-Wong/p/16610447.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有