如何在 C 中导出用户定义的库

How to Export User Defined Library in C

我创建了一个相当大的库:

DataStructures.h :
       Stack.h :
           Stack.c
       LinkedList.h :
           LinkedList.c
       HashTable.h :
           HashTable.c 
       etc...

我如何导出这个库以便其他人可以使用它们?他们是否必须 link .c 连同他们的 main?

您需要将您的 .c 文件编译成库并将库和 header 一起分发。

图书馆有两种类型;动态(在 Linux 上以 .so 结尾)和静态(在 Linux 上以 .a 结尾)。

我相信 Windows 上的静态库以 .lib 结尾,那里的动态库以 .dll 结尾,但我不是 windows 开发人员。

Mac 可以同时拥有 .so.dylib 文件,具体取决于您的工具链。

在 Linux 上,制作静态库的一般方法是使用工具 arranlib。假设您的 Makefile 有一个名为 OBJS 的 object 个文件列表,

mylibrary.a: $(OBJS)
        ar -ru $@ $(OBJS)
        ranlib $@

创建共享库类似,但通常使用 gcc -shared 而不是 arranlib,并且必须为 [= 编译 object 文件37=],即添加 -fPIC 到您的 CFLAGS。

获得库和 header 文件后,将 header 放在名为 "include" 的目录中,将库放在名为 "lib" 的目录中。将这两个目录归档(例如使用 tar 或 zip)并将它们发送给任何使用它们的人。

请注意,他们需要与您相同类型的计算机、操作系统版本、编译器等。这就是 C 库代码最常以源代码格式共享的原因。