和Vamei大佬学动态链接库(.so)

每一个C程序中,除了用于实现算法和数据结构 (比如栈和相关的操作),还有用于测试的main()函数,结构体定义,函数原型,typedef等等。

这样的做法非常不“环保”。算法的实际运用和算法的实现混在一起。如果我想要重复使用之前的源程序,必须进行许多改动,并且重新编译。最好的解决方案是实现模块化: 只保留纯粹的算法实现,分离头文件,并编译一个库(library)。每次需要使用库的时候(比如使用栈数据结构),就在程序中include头文件,连接库。这样,不需要每次都改动源程序。

我在这里介绍如何在UNIX环境中创建共享库 (shared library)。UNIX下,共享库以so为后缀(shared object)。共享库与Windows下的DLL类似,是在程序运行时动态连接。多个进程可以连接同一个共享库。

  • #include "..."; 语句将首先在工作目录寻找相应文件。如果使用gcc时,增加-I选项,将在-I提供的路径中寻找
  • 对于#include <...>,编译器会在默认include搜索路径中寻找。
  • 库文件以lib开头,所以指定库文件的时候可以省去lib

单独摘抄会失去灵魂,建议反复阅读原文

ref:https://www.cnblogs.com/vamei/archive/2013/04/04/2998850.html

posted @ 2021-01-15 16:45  小小马进阶笔记  阅读(104)  评论(0)    收藏  举报