linux编译器gcc / g++ 使用
1.gcc 编译器编译c语言程序
gcc + 文件名(默认生成a.out 可执行程序程序)
我们执行a.out由两种方法(相对路径 \ 绝对路径)
进行程序的翻译
1.预处理(进行宏替换、头文件展开、去注释、条件编译)
2.编译(生成汇编)
3.汇编(生成机器可识别代码)
4.链接(生成可执行文件或库文件)
1.预处理
gcc -E c语言文件
我们去掉 -o 不指定预处理完的内容放入指定的文件 , 那么预处理完的内容直接输出在命令行上(这样子没有任何意义)
我们可以观察 test2.i
2.编译
gcc -S 文件 (可以从 .c 文件开始 ,也可以从 .i 文件开始)
- S 开始进行编译,编译完成后停止
3.汇编
上一阶段进行了编译,将 c语言转成了汇编语言,但计算机不可以直接执行汇编语言,汇编语言还需要编译器。
这里的可重定向二进制目标文件(其实也就是 在vs 下的 .obj 文件了)
4.链接
ldd 查看可执行程序依赖第三方库的命令
链接如何理解????
动态链接、静态链接
那么我们gcc 编译器默认是动态链接方式 , 形成可执行程序
那么如果我们想静态链接呢???
-static