分发用C编写的库

时间:2012-05-14 09:33:36

标签: c conventions

假设我有一些用C编写的代码,其中定义了一些数据结构,一些函数用于处理这些结构以及所有在src1目录中的函数。假设现在我想分发这段代码。

如果我想在项目中使用src1中的外部代码,我该怎么办?我应该将src1中的代码编译为.a存档,然后将该存档包含在我想要使用的其他项目中吗?

基本上我需要知道的是在项目中使用外部代码的正确约定。

提前致谢。

3 个答案:

答案 0 :(得分:4)

要以库的形式分发代码,您需要按照以下步骤操作:

  1. 列出要向其他项目公开的结构,函数,宏等集合。
  2. 将Point-1中列出的数据集分组为一组头文件。其余内容可以在其他头文件中。
  3. 将您的代码编译为 静态 (对于基于Linux的系统将为.a,对于Windows将为.lib)或 动态 库(对于基于linux的系统,它将是.so / .sl,对于Windows,将是.dll)
  4. 将您的库和一组公开的头文件(如上面第2点所述)提供给其他项目。
  5. 使用gcc创建静态或共享库的链接是here

    使用MSVC在Windows中创建静态或动态库的链接是here

答案 1 :(得分:1)

是的,您可以使用静态库,它是Linux中的.a文件,通常是Windows中的.lib。这也要求您共享标题,因此使用该库的代码可以具有正确的数据结构定义。

答案 2 :(得分:1)

您可以使用任何格式(.a或.so)来分发您的库。第一个是静态盟友墨水,第二个是动态链接。要了解更多信息,请参阅此答案Difference between static and shared libraries?

你曾经使用过的东西总是以同样的方式链接它。

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

此处,/path/to/lib可以包含您之前编译的libsrc1.solibsrc1.a