gcc && g++ && 编译 &&初识动静态库

一.编译

编译分为四个过程

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.静态库:静态库不会加载到内存,而是会拷贝到每个所需要的文件中,文件一并加载到内存中,也就是说静态库本身不会加载到内存,但经过拷贝的文件会加载到内存中执行,这样一来就会造成大量的内存浪费

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值