Linux中的包名"xxx"和"xxx-dev"有什么区别?

1. 引入

在安装包的时候,有时候需要安装xxx的包,有时候又需要安装xxx-dev的包 (在CentOS系列发行版上则是xxx-devel)。这两类包之间又什么区别呢?

2. 结论

不包含-dev的包里面包含的是运行所需要的二进制文件或者连接库文件(如xxx.so),而包含-dev的包则包含包的源码文件(如.h文件),为的是在编译使用了这些库的程序的时候,能找到对应的头文件,否则只有二进制文件或者.so文件,编译时会报代码找不到头文件的错误。

下面举个例子进行说明。

我们只使用Python的话,用sudo apt install python即可,安装后就可以正常使用Python。

如果想要编译一个叫lxml的库,它依赖Python的源码,例如这里的代码依赖Python.h这个文件,因此我们需要安装python-dev包,把Python.h安装到本地上,这样lxml包才能正常安装。

3. 参考

  1. https://stackoverflow.com/questions/2358801/what-are-devel-packages