c - 什么是 *-devel 包?

标签 c

像“libgtk+-devel”或“python-devel”等开发包有什么用处?它们是否包含图书馆的来源?它与 libgtk+ 等非开发包有何不同?

最佳答案

*-devel 包(在基于 Debian 的发行版中通常称为 *-dev)通常是针对给定库编译代码所需的所有文件。

要运行使用库 libfoo 的应用程序,只有实际共享的库文件(*.so.*,例如 libfoo.so.1.0) 是必需的(可能还有一些数据文件和一些版本特定的符号链接(symbolic link))。

当您真正想要编译一个使用该库的 C 应用程序时,您需要头文件(*.h,例如 foo.h)描述该应用程序的接口(interface)以及指向共享库的无版本符号链接(symbolic link)(*.so,例如 libfoo.so -> libfoo.so。 1.0)。这些通常捆绑在 *-devel 包中。

有时 *-devel 包还包含库的静态编译版本(*.a,例如 libfoo.a)如果您想构建一个完全不依赖于动态库的独立应用程序。

其他语言(例如 Java、Python 等)使用不同的方式来标记库的 API(有效地包括实际库中的所有必要信息),因此通常不需要单独的 *-开发 包(文档和其他工具除外)。

关于c - 什么是 *-devel 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2358801/

相关文章:

c - 如何将单个头文件应用于 C 项目的其余部分以便不再需要它?

c - 产生算术溢出

c - 服务器尝试接受连接并失败并返回 "Socket operation on non-socket",尽管没有来自客户端的连接操作

c - strcmp() 不适用于 char *array 和 char const 比较

c - 通过队列实现快速排序?

c++ - 如何获取程序运行的目录?

c - 是否有用于 linux iptables 的 api ,以便我的程序可以添加防火墙规则

c - 在 C 中声明函数会给出预期的错误 ';' 、 ',' 或 ')'

c++ - 了解clock_gettime()的不同时钟

c - 如何解决这个深度优先搜索问题?