关键词:静态链接、Linux下静态库的创建和使用、动态链接、 Linux下动态库的创建和使用
1. 问题
工程中的每个C语言源文件被编译后生产目标文件,这些目标文件如何生存最终的可执行程序?
链接器的意义:链接器的主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确的衔接
2. 静态链接
- 概念:由链接器在链接时将库的内容直接加入到可执行程序中
3. Linux下静态库的创建和使用
- 编译静态库源码:
gcc -c lib.c -o lib.o
- 生成静态库文件:
ar -q lib.a lib.o
- 使用静态库编译:
gcc main.c lib.a -o main.out
4. 动态链接
- 可执行程序在运行时才动态加载库进行链接
- 库的内容不会进入可执行程序当中
5. Linux下动态库的创建和使用
- 创建动态库源码:
gcc -shared dlib.c -o dlib.so
- 使用动态库编译:
gcc main.c -ldl -o main.out
- 关键系统调用:
dlopen
:打开动态库文件
dlsym
:查找动态库中的函数并返回调用地址
dlclose
:关闭动态库文件
6. 小结
- 链接是指将目标文件最终链接为可执行程序
- 静态链接:目标文件直接链接进入可执行程序
- 动态链接:在程序启动后才动态加载目标文件
声明:此文章为本人在学习狄泰软件学院《C语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!