链接装载与库_读书笔记(一)

自己整理的一些读书笔记,主要是重点内容提取和理解。如果有描述不准确,还请各位同仁多多指教!


    第二章   编译、汇编、链接

以c++ 为例。

预编译  hello.c  -->   hello.i    处理源代码中以#开头的指令 如 #include #define 删除#define 展开宏,删除注释。

$gcc -E hello.c -o hello.i  //生成预编译文件


编译  hello.i  --> hello.s   主要是词句法分析。 通常前两步编译和预编译在一步完成。  预编译编译程序cc1。

$gcc -S hello.i -o hello.s  或者

$cc1 hello.c   // 直接生成 hello.s 文件完成预编译和编译。


汇编  hello.s  --> helli.o

$as hello.s -o hello.o //或者直接一步到位

$gcc -c hello.s -o hello.o//

$gcc -c hello.c -o hello.o//直接一步从源码上升到hello.o


链接  hello.o  -->  hello  可执行文件

$ld -static -group 

总结  编译预编译器cc1,汇编器as,链接器ld。然后gcc -E -S -o 也具有同样功能。


  第三章   目标文件

    弱符号与强符号 : c++中默认的初始化了全局变量为强符号,未初始化的全局变量为弱符号。

            


     弱引用和强引用  : 如果未找到符号的定义,弱引用不报错,强引用报错。

                  

      EFL 文件格式


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值