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

问题描述 投票:0回答:1

我已经创建了一个相当大的库。

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

我如何导出这个库,让其他人也能使用?他们是否必须将.c和他们的主库链接在一起?

c shared-libraries
1个回答
4
投票

你需要将你的.c文件编译成一个库,并将库和头文件一起分发。

有两种类型的库;动态库(以 .so 在Linux上)和静态(以 .a Linux上的)。)

我相信在Windows上静态类库以.lib结尾,而动态类库则以.dll结尾,但我不是Windows开发人员。

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

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

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

创建共享库也是类似的,但是不需要用 arranlib,你通常使用 gcc -shared你必须编译 "独立于位置的代码 "的对象文件,即添加 "独立于位置的代码"。-fPIC 到你的CFLAGS中。

一旦你有了库和头文件,把头文件放在一个叫 "include "的目录中,把库放在一个叫 "lib "的目录中。 将这两个目录归档(例如用tar或zip),然后发送给使用它们的人。

注意,他们需要和你一样的计算机、操作系统版本、编译器等。 这就是为什么C库代码最常以源代码格式共享的原因。

© www.soinside.com 2019 - 2024. All rights reserved.