[Linux开发工具]gcc/g++
C语言文件编译运行
gcc code.c -o mycode
gcc -o mycode code.c
预处理 汇编 编译 链接
预处理(进行宏替换/去注释/条件编译/头文件展开)
gcc -E code.c -o code.i
-E ->从现在开始进行程序的编译,当我们 的程序预处理完毕后,翻译工作,就停下来
code.i预处理之后的结果
头文件展开:把头文件中相关内容,直接拷贝到我们的源文件中,预处理完毕,就可以不用头文件了
条件编译:对代码进行裁剪(专业版/免费版)
gcc可以对我们的代码进行增删改
编译(生成汇编)
gcc -S code.i -o code.s
-S 从现在开始进行程序的编译,编译完成就停下来
汇编(生成机器可识别代码)
gcc -c code.s -o code.o
-c从现在开始进行程序的翻译,汇编完成就停下
可重定位目标二进制文件
无法直接执行(没有和库链接)
链接(生成可执行文件或库文件)
gcc code.c -o mycode
code.o code.obj可重定义目标文件(重新填写目标文件在库中的地址)
必须提前安装好库+头文件
- -Esc翻译过程-ISO文件结尾
库的常见分类
静态库:windows:.lib/Linux:.a(静态链接)
动态库:windows:.dll/Linux.so(动态链接)
库的命名:Linux:libXXX.so.YYY
默认采用动态链接方式编译
动态库/共享库
优点:节省资源
缺点:一旦丢失,所有程序无法执行
静态链接:把你要的方法,拷贝到你的可执行程序中
优点:不依赖任何库
缺点:占据内存资源,加载速度受影响