20_链接过程简介

关键词:静态链接、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语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容