gcc编译器见:http://xinyiworld.top/wordpress_it/?p=1749

编译产物

https://blog.csdn.net/Groupers/article/details/111570459
https://blog.csdn.net/qq_59084325/article/details/125726056

执行可执行文件
./文件名,不能直接在命令行输入文件名。

编译过程

http://c.biancheng.net/view/1736.html
https://blog.csdn.net/qq_62939852/article/details/127263338
https://www.jianshu.com/p/b4c3e80269a6

格式
gcc -E/-S/-c 中间文件 -o 目标文件(注意参数区分大小写)

gcc test.cpp不带任何的参数默认生成test.out文件,也就是可执行文件。

1.预处理

所做的操作:展开宏、头文件、替换条件编译、删除注释、空白、空行
g++ -E test.cpp -o test.i //.i文件
或者
g++ -E test.cpp > test.i //.i文件

g++ -E默认不会生成文件,会将文件内容打印到屏幕。

2.编译

所做的操作:检查语法规范,生成汇编语言
g++ -S test.i [-o test.s]

g++ -S test.i默认生成test.s文件,如果想修改生成的文件名,可以使用-o参数。

3.汇编

所作操作:将汇编代码编译成目标文件,也就是转换成了目标机器平台上的机器指令
g++ -c test.s -o test.o

.o:目标文件(二进制文件)

4.链接

所作操作:数据段合并,数据地址回填。将目标文件连接成可执行文件
g++ test.o -o test

注意:如果链接时存在同名的库文件,优先链接动态库。

如何保留所有中间文件:加上-save-temps参数

编译原理

https://zhuanlan.zhihu.com/p/94249215
http://www.360doc.com/content/21/1027/21/277688_1001569890.shtml

分类: 基础

0 条评论

发表回复

您的电子邮箱地址不会被公开。