Linux 包存储库中的 *-dev 包实际上包含什么?

我的问题非常基本,我现在的知识也是如此。

我是一个长期的 Linux 用户,但最近才对编程产生了浓厚的兴趣。我发现 Ubuntu 存储库中很多流行的应用程序都有-dev 包(例如,除了 洋泾浜之外,还有 皮金德夫)。我的问题是:

这些包裹里是什么?如何下载 皮金德夫帮助一个开发洋泾浜?它是否像为给定应用程序创建插件所必需的工具的依赖性检查那样简单?

我希望-dev 包中会有大量的文档,但是如果有的话,我就不知道如何访问它了。我在考虑类似于手册页的东西,但对编辑代码很有用。

任何建议都欢迎!

32457 次浏览

Dev 包通常包含 C 头文件和静态编译的库文件版本(。延期)。有时它们包含额外的文档和示例,甚至包含助手应用程序。

*-dev包通常包含与库接口相关的头。接下来最常见的是描述构建选项的包配置文件(*.pc)和静态链接库。

一般来说,如果您想知道已安装的软件包的内容,dpkg -L pkgname将为您提供。对于存储库中的任何包,apt-file程序都可以告诉您相同的信息。

另请注意,William Pursell 和 caf 的答案包含有用的附加细节。如果你觉得他们的建议很有帮助,请支持他们。

此包包含主 pidgin 包中未包含的头文件和其他开发文件。如果您希望编译自己的插件,请安装-dev。

(免责声明: 我熟悉 Debian,但不熟悉 Ubuntu,所以尽管几乎可以肯定我下面写的所有东西都适用,但有可能不适用。)

*-dev包中的另一个项目是 /usr/lib/lib*.so链接。libfoo0包将安装文件 /usr/lib/libfoo.so.0.0,而 libfoo-dev将安装链接 /usr/lib/libfoo.so.0/usr/lib/libfoo.so。这种机制允许同时安装 libfoo0libfoo1,因此需要旧库的软件可以与使用新库的软件共存在机器上。当您安装 libfoo-dev时,任何已编译的软件都将遵循 /usr/lib/lib*.so0链接并链接到该链接所引用的库的版本。

我认为 Caf 和 William 的回答都是正确的,但忽略了最重要的一点 不能在运行时库上编译代码。它们是熊的最小值,因此您的代码可以运行,也就是解决运行时依赖性。几乎是独一无二的。文件。 通常情况下,您使用开发库来开发程序,就像您拥有头文件、静态库( 。A)、文档甚至一些源文件作为二进制编译的示例。这些文件占用了更多的存储空间,在运行时没有任何价值。 我是一个 SDK 开发人员,所以当尝试为用户创建模块化解决方案时,这些语义是非常重要的。