像“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/