安装:
https://www.jianshu.com/p/320aefbc582d
1、VC++ 编译与链接的过程:
1.1 windows下
程序的生成过程分为两步:
编译:compile,将*.cpp ‐> *.o ###windows下生成 .obj 的文件 在debug目录下。windows下生成 .obj 而Linux下是 .o 文件
链接:link, 将所有的*.o ‐> executable
在Linux下开发时,要严格区分这两步过程。
使用 ‐c 选项,生成中间文件*.o
一、编译
g++ ‐c main.cpp ‐o main.o
g++ ‐c other.cpp ‐o other.o
(加上‐c就表示进行的是compile,不是link)
二、链接
g++ main.o other.o ‐o helloworld
(没有加‐c,表示生成最终的可执行程序)
三、编译过程
编译过程分为四步:预处理、编译、汇编、连接
1. 预处理
预处理主要处理源文件中的“#include”、“#define”等预处理等命令
预处理主要完成的工作有(参考:《程序员的自我修养》):
(1) 删除 #define,展开宏
(2) 处理条件编译指令。预处理程序先判断条件,再根据条件修改源代码
(3) 删除注释
(4) 添加行号,以及文件名标识。便于调试
(5) 删除“#include”,插入相应的头文件
2. 编译(这一步vs studio 基本省略了。)
生成汇编代码的过程。
使用gcc -S main.i -o main.s 命令,编译后得到main.s 文件
3. 汇编 main.o
将汇编代码转化成 机器指令。
使用gcc -c main.c -o main.o 命令,得到目标文件main.o
4. 连接 (链接时候可能使用到动态链接库--有时候编译成功链接却失败了,可能是这个原因)
通过连接库文件,将目标文件转化成可执行文件。
使用命令 gcc -ld
一般情况下,我们直接使用gcc main.c -o main就可以生成可执行程序了。
当然,在Windows下使用gcc时,生成的可执行文件不再是main.out ,而是main.exe文件