【静态链接】第2章---------------------静态链接过程(静态库链接)
来源:互联网 发布:windows rt应用下载 编辑:程序博客网 时间:2024/05/24 06:34
######## 该系列博文为书籍《程序员的自我修养》的笔记 ##########
【说明】
我们平时写程序并没有直接调用操作系统的系统调用,而是使用库函数比如printf ,然后 printf 去调用系统调用。这节就来看看我们是怎么以静态方式将库和我们的程序链接起来的,另外就是我们如何自己来做库文件。
【静态库】
其实一个静态库里面有很多.o 文件,他们被打包形成了一个库文件,一般是.a 文件
比如我们来看看/usr/lib/libc.a 这个文件,一堆.o文件
【库的链接】
如果我们写了一个hello world 调用了printf,那按照前面介绍的静态链接的原理,是不是我们直接将printf.o 拷贝到工程目录中也行呢?其实不是这样的。为什么?因为printf.o里面也用到其他的库文件,其他库文件又用到别的库文件,除非把所有这些有关系的库文件都拷贝到工程中,才可以让这个hello world 不需要库的支持。
【自制静态库】
我们如何将自己的;.o 文件制作成为.a 文件呢。
1)编译
比如我们的文件是a.c和 b.c ,我们需要先将他们编译成a.o和b.o
gcc -c a.c -o a.o
gcc -c b.c -o b.o
2)制作
ar -rc libtest.a a.o b.o
3)使用
比如我们的test.c 需要用到libtest.a 里面的文件。那就要这么编译
gcc test.c -o test -L./ -ltest
-L参数后面是库文件的路径
-l后面是库文件的名字再除去前面的 "lib“ 所以libtest 就是 test
- 【静态链接】第2章---------------------静态链接过程(静态库链接)
- 【静态链接】第2章---------------------静态链接过程(空间地址分配)
- 【静态链接】第2章---------------------静态链接过程(符号解析与重定位)
- 编译器链接过程 静态链接 动态链接
- 静态链接,编译过程
- 静态链接的过程
- 第2部分 静态链接---(4)静态链接
- 动态链接库、静态链接库;动态链接、静态链接
- 动态链接,静态链接,动态链接库,静态链接库
- 静态链接
- 静态链接
- 静态链接
- 静态链接
- 静态链接
- 静态链接
- 静态链接
- 静态链接
- 静态链接
- 关于VisualStudio性能分析数据中的独占样本数和非独占样本数的意义
- sql优化之:改善SQL语句
- c# 属性的访问修饰符
- LCD设备驱动程序
- 【风宇冲】Unity3D教程宝典之Raycast
- 【静态链接】第2章---------------------静态链接过程(静态库链接)
- Java中Math类常用函数总结
- C++:关于template与friend联合出现的问题
- 开拓者探地雷达BS-M
- jquery ajax例子
- struts2.2.3需要11个基本包
- Java中的内存处理机制和final、static、final static总结
- 无效3字节utf - 8的第3字节Invalid byte 3 of 3-byte UTF-8 sequence. Nested exception: Invalid byte 3 of 3-byte
- 禁止鼠标拖动图片在新窗口打开