20_链接过程简介

关键词:静态链接、Linux下静态库的创建和使用、动态链接、 Linux下动态库的创建和使用

1. 问题

工程中的每个C语言源文件被编译后生产目标文件,这些目标文件如何生存最终的可执行程序?
链接器的意义:链接器的主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确的衔接

《20_链接过程简介》

2. 静态链接

  • 概念:由链接器在链接时将库的内容直接加入到可执行程序中
    《20_链接过程简介》

3. Linux下静态库的创建和使用

  • 编译静态库源码:gcc -c lib.c -o lib.o
  • 生成静态库文件:ar -q lib.a lib.o
  • 使用静态库编译:gcc main.c lib.a -o main.out

4. 动态链接

  • 可执行程序在运行时才动态加载库进行链接
  • 库的内容不会进入可执行程序当中
    《20_链接过程简介》

5. Linux下动态库的创建和使用

  • 创建动态库源码:gcc -shared dlib.c -o dlib.so
  • 使用动态库编译:gcc main.c -ldl -o main.out
  • 关键系统调用:
    dlopen:打开动态库文件
    dlsym:查找动态库中的函数并返回调用地址
    dlclose:关闭动态库文件

6. 小结

  • 链接是指将目标文件最终链接为可执行程序
  • 静态链接:目标文件直接链接进入可执行程序
  • 动态链接:在程序启动后才动态加载目标文件

声明:此文章为本人在学习狄泰软件学院《C语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!

    原文作者:jacob2359
    原文地址: https://www.jianshu.com/p/ed41e31b8250
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞