链接装载与库_读书笔记(一)
2016-04-24 18:56
239 查看
自己整理的一些读书笔记,主要是重点内容提取和理解。如果有描述不准确,还请各位同仁多多指教!
第二章 编译、汇编、链接
以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 文件格式
第二章 编译、汇编、链接
以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 文件格式
相关文章推荐
- 自己动手一步步搭建repo服务器
- apache和tomcat关系
- Android Small插件化框架解读——Activity注册和生命周期
- 20145232 韩文浩 实验三
- android studio学习----构建(gradle )依赖时使用动态依赖的问题
- 【POJ】[2456]Aggressive cows
- Spring中@Autowired注解、@Resource注解的区别
- MIME详解
- LeetCode *** 5. Longest Palindromic Substring
- 淘宝内部视频:分布式存储技术VS分布式消息实践
- numpy中的nonzero()的用法
- ubuntu安装jdk
- LoaderManager使用详解(三)---实现Loaders
- 静态代理与动态代理一句话区别
- iOS中的数据库—使用FMDB
- 对搜狗输入法的看法
- 第八周学习进度表
- SAS 免更改日期启动批处理文件
- stringbuffer和stringbuilder的区别
- 小技巧,关于OC打印指针地址和arc下的retaincount