我已经创建了一个相当大的库。
DataStructures.h :
Stack.h :
Stack.c
LinkedList.h :
LinkedList.c
HashTable.h :
HashTable.c
etc...
我如何导出这个库,让其他人也能使用?他们是否必须将.c和他们的主库链接在一起?
你需要将你的.c文件编译成一个库,并将库和头文件一起分发。
有两种类型的库;动态库(以 .so
在Linux上)和静态(以 .a
Linux上的)。)
我相信在Windows上静态类库以.lib结尾,而动态类库则以.dll结尾,但我不是Windows开发人员。
Mac可以同时拥有 .so
和 .dylib
文件,这取决于你的工具链。
在Linux上,制作静态库的一般方法是使用工具的 ar
和 ranlib
. 假设你的Makefile中有一个名为OBJS的对象文件列表。
mylibrary.a: $(OBJS)
ar -ru $@ $(OBJS)
ranlib $@
创建共享库也是类似的,但是不需要用 ar
和 ranlib
,你通常使用 gcc -shared
你必须编译 "独立于位置的代码 "的对象文件,即添加 "独立于位置的代码"。-fPIC
到你的CFLAGS中。
一旦你有了库和头文件,把头文件放在一个叫 "include "的目录中,把库放在一个叫 "lib "的目录中。 将这两个目录归档(例如用tar或zip),然后发送给使用它们的人。
注意,他们需要和你一样的计算机、操作系统版本、编译器等。 这就是为什么C库代码最常以源代码格式共享的原因。