有没有办法用头文件打包C库

is there a way package C libary with header

我正在用 C 编写一个库。现在我要把它交付给我的测试人员,但出现了问题。

我必须运送我的 .a 库和大量头文件。这些头文件对测试人员来说使用起来似乎很不方便。无论如何,有没有办法减少需要传送的文件数量,以便更容易移动和设置? (例如将所有头文件打包成 1 或类似的东西)

在 Linux 上交付软件(包括库)的最常见方式是使用包(例如 Red Hat/CentOS 上的 RPM 或 Debian/Ubuntu 上的 DEB)。这将需要您付出一些额外的努力(学习使用一些新工具、编写 rpm/deb 规范等),但它会得到回报:

  • 软件包包含版本号,因此很容易跟踪您正在测试的内容
  • packages 允许您将文件安装到您指定的目录中(例如 /usr/include 用于 headers,/usr/lib 用于库)。
  • 如果您设法建立了一个私有包存储库,您的测试人员将能够使用标准 Linux 工具(例如 apt-getyum)install/upgrade/downgrade 库。

至于最小化 header 的数量,通常的做法是将 header 分成两个子集:接口 header(定义 API你的图书馆)和内部 headers(声明内部使用的函数和类型,实现细节)。只有前者需要安装。示例:libjpegturbo. This repository has many header files, but the corresponding package for CentOS 7 仅安装 4 headers).

如果这还不够,您可以简单地将所有接口 header 连接成一个大的 header(只要顺序正确,它应该可以工作)。 Googletest 库使用 python script 合并他们的 header(以及来源)。