4

假设我有一些用 C 编写的代码,其中定义了一些数据结构和一些函数来处理这些结构,所有这些都在一个名为 src1 的目录中。假设现在我想分发此代码。

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

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

提前致谢。

4

3 回答 3

5

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

  1. 列出您想要向其他项目公开的一组结构、函数、宏等。
  2. 将 Point-1 中列出的一组数据分组到一组头文件中。其余的内部内容可以在其他头文件中。
  3. 将您的代码编译成静态(基于 linux 的系统为 .a 或 windows 为 .lib)或动态库(基于 linux 的系统为 .so/.sl 或 windows 为 .dll)
  4. 将您的库和一组公开的头文件(如上面第 2 点所决定)提供给其他项目。

使用 gcc 创建静态或共享库的链接在这里

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

于 2012-05-14T09:59:54.783 回答
1

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

于 2012-05-14T09:53:06.750 回答
1

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

无论您使用哪个,您总是以相同的方式链接它。

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

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

于 2012-05-14T09:55:13.803 回答