有没有办法用头文件打包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-get
或 yum
)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(以及来源)。
我正在用 C 编写一个库。现在我要把它交付给我的测试人员,但出现了问题。
我必须运送我的 .a 库和大量头文件。这些头文件对测试人员来说使用起来似乎很不方便。无论如何,有没有办法减少需要传送的文件数量,以便更容易移动和设置? (例如将所有头文件打包成 1 或类似的东西)
在 Linux 上交付软件(包括库)的最常见方式是使用包(例如 Red Hat/CentOS 上的 RPM 或 Debian/Ubuntu 上的 DEB)。这将需要您付出一些额外的努力(学习使用一些新工具、编写 rpm/deb 规范等),但它会得到回报:
- 软件包包含版本号,因此很容易跟踪您正在测试的内容
- packages 允许您将文件安装到您指定的目录中(例如
/usr/include
用于 headers,/usr/lib
用于库)。 - 如果您设法建立了一个私有包存储库,您的测试人员将能够使用标准 Linux 工具(例如
apt-get
或yum
)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(以及来源)。