一.编译
编译分为四个过程
a.预处理:主要负责代码裁剪:去掉注释,条件编译,宏替换任务
b.编译:生成汇编语言
c.汇编:生成机器可识别的代码
d.链接:生成可执行文件或库文件
二.gcc && g++ 编译
gcc 和 g++选项,操作相同,一并讲解
gcc 编译c语言,g++ 可编译c和c++
操作
直接翻译成为可执行文件:gcc 要编译的文件名 -o 生成可执行程序的文件名
例如:gcc code.c -o code
翻译到预处理:-E 文件后缀:.i | gcc code.c -E code.i
翻译到编译后(也就是生成汇编文件):-S 文件后缀:.s | gcc -S code.c -o code.s
翻译到汇编后(机器可以识别的二进制代码):-c 文件后缀:.o | gcc -c code.c -o code.o
简单记忆技巧:ESc 文件后缀:iso
三.动态库/静态库 && 动态链接/静态链接
编译时,经常编译到.o文件也就是汇编结束后就停止,然后再将一批.o文件批量链接成为一个可执行文件。
1.动态库:也可以称作共享库,在进行链接后,动态库的内容只加载一份到内存中,不会造成内存浪费的情况,是通过地址做到的,动态库的本质是把语言层面公共的代码,在内存中未来只出现一次。
2.静态库:静态库不会加载到内存,而是会拷贝到每个所需要的文件中,文件一并加载到内存中,也就是说静态库本身不会加载到内存,但经过拷贝的文件会加载到内存中执行,这样一来就会造成大量的内存浪费

871

被折叠的 条评论
为什么被折叠?



