![开发下载是否与常规下载一样完整?](https://linux22.com/image/1244817/%E5%BC%80%E5%8F%91%E4%B8%8B%E8%BD%BD%E6%98%AF%E5%90%A6%E4%B8%8E%E5%B8%B8%E8%A7%84%E4%B8%8B%E8%BD%BD%E4%B8%80%E6%A0%B7%E5%AE%8C%E6%95%B4%EF%BC%9F.png)
我想知道,开发下载是否总是与常规下载一样完整?
答案1
我假设您指的是 Debian 和 Ubuntu 中看到的软件包名称。
包的后缀-dev
表示它包含使用无后缀包进行开发相关的文件。
例如,软件包zlib1g-dev
包含使用创建应用程序所需的文件zlib1g
。zlib1g
仅包含库,因此现有应用程序可以使用其中的功能。编译需要 -dev 文件,因为编译器必须知道函数来自何处,但是一旦程序编译完成,只需要常规软件包,因为编译后的应用程序知道加载库并使用其中的函数。
除非你手动编译使用库的应用程序,否则你通常不需要软件包-dev
- 你需要的是非软件包-dev
。但是,如果你是编译应用程序,您将需要它们两者 - 该-dev
包不包含库本身(但它通常依赖于库,因此您可以通过这种方式获得它)。
答案2
以 结尾的软件包包含-dev
构建调用该库的应用程序时使用的标头和静态库。如果您从源代码构建应用程序,并且想要静态编译库,那么这可能就足够了。
但是,您从软件包安装的所有应用程序都将使用软件包所不提供的共享库-dev
,因此您还需要安装基础软件包。
几乎所有以 结尾的库包都-dev
依赖于基础包,因此如果您选择libpng-dev
并安装它,您的包管理器应该会libpng
自动下载。如果您libpng-dev
自己下载并尝试安装它,安装可能会失败,因为它libpng
也需要指定。通常有命令行开关可以强制安装而不检查依赖项,但它们很少使用,也不推荐。
总之:您确实应该下载基础包以及包-dev
,但通常包管理器会为您处理这些。