分发用C语言编写的库

5
假设我有一些用C语言编写的代码,其中定义了一些数据结构和一些函数来处理这些结构,并且所有这些都在一个名为src1的目录中。现在假设我想要分发这段代码。
如果我想在项目中使用src1中的外部代码,我应该怎么做?我应该将src1中的代码编译成一个.a归档文件,然后将该归档文件包含在我想要使用的其他项目中吗?
基本上,我需要知道在项目中使用外部代码的正确约定。
提前致谢。

1
取决于你想要将其分发给谁。 - Fred Foo
3个回答

7
为了以库的形式分发代码,您需要按照以下步骤操作:
  1. 列出您想要向其他项目公开的结构、函数、宏等集合。
  2. 将在第1点中列出的数据集合分组到一组标题文件中。其余的内部内容可以在其他头文件中。
  3. 将您的代码编译成静态(.a用于基于Linux系统或.lib用于Windows)或动态库(.so/.sl用于基于Linux系统或.dll用于Windows)。
  4. 向其他项目提供您的库和一组公开的标题文件(按照上面第2点决定)。
使用gcc创建静态或共享库的链接在这里
在Windows中使用MSVC创建静态或动态库的链接可在这里找到。

谢谢!我会这样做的!还要感谢您提供的链接和步骤! - petermlm

1
是的,您可以使用静态库,它在Linux中是一个 .a 文件,在Windows中通常是一个 .lib 文件。当然,这还需要共享头文件,以便使用库的代码可以具有适当的数据结构定义。

谢谢!我将使用.a文件。 - petermlm

1

您可以使用任何格式(.a或.so)来分发您的库。第一个是静态链接,第二个是动态链接。要了解更多信息,请参见此答案静态库和共享库之间的区别?

无论您使用哪种方式,始终以相同的方式链接它。

gcc -L/path/to/lib -lsrc1 source.c -o source.o

在这里,/path/to/lib 可以包含任何你之前编译的 libsrc1.solibsrc1.a


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接