头文件
要从源代码构建程序,您不仅需要它使用的库的编译二进制文件。你还需要他们的头文件。
在 Debian、Ubuntu 和其他基于 Debian 的操作系统中,头文件由名称以-dev
. 通常它是-dev
附加的二进制包名称,或者是删除并-dev
附加了一些版本号的二进制包名称。
-dev
包(用于编译)不应与-dbg
包(用于调试)混淆。以下是有关如何以及为何制作这些软件包的一些信息。
pkg-config 软件包与您的软件包管理器的软件包
当您从源代码构建并./configure
告诉您缺少包时,通常它不会检查包管理器以查看已安装的内容,并且缺少包的名称通常不是您需要与包一起安装的包的确切名称经理。(pkg-config是./configure
脚本计算依赖项的常用方法——请参阅本文、手册页和项目页面了解更多信息。)
使用包管理器确定要安装的包
要找出您确实需要安装哪些软件包,您可以查看以相同开头的软件包......或者lib
以./configure
. 以 开头的包lib
更常见(在 Debian 和基于 Debian 的系统上),因为大多数库包都是这样命名的。
您可以在线搜索软件包(其他发行版通常也提供此功能,这里是 Debian 的)。或者您可以使用bash 补全来找到它们。由于这使用了系统上本地存储的有关哪些软件包在哪些版本中可用的信息,因此您应该首先更新该信息:
sudo apt-get update
然后输入一个命令来安装一个包,只是名称的开头——不管你认为你知道多少。例如,对于glib-2.0
:
ek@Del:~$ apt-get install libglib2
libglib2.0-0 libglib2.0-cil-dev
libglib2.0-0-dbg libglib2.0-data
libglib2.0-0-dbgsym libglib2.0-dev
libglib2.0-0-refdbg libglib2.0-dev-dbgsym
libglib2.0-0-refdbg-dbgsym libglib2.0-doc
libglib2.0-bin libglib2-ruby
libglib2.0-bin-dbgsym libglib2-ruby1.8
libglib2.0-cil libglib2-ruby1.8-dbg
libglib2.0-cil-dbgsym
在那里,我没有运行我输入的命令。(如果我有,它就不会成功,既因为没有调用包libglib2
,也因为apt-get install
除非以 root 身份运行,否则不会成功。)
相反,我Tab在行尾按了几次,我得到了一份建议清单。
从这些建议中,正确的是libglib2.0-dev
。
如果你仍然不确定
有时你不一定知道哪一个是对的;然后你可以用它apt-cache show ...
来找出答案。例如,假设我想知道是否还需要libglib2.0-cil-dev
:
ek@Del:~$ apt-cache show libglib2.0-cil-dev
Package: libglib2.0-cil-dev
Priority: optional
Section: libs
Installed-Size: 174
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian CLI Libraries Team <pkg-cli-libs-team@lists.alioth.debian.org>
Architecture: i386
Source: gtk-sharp2
Version: 2.12.10-2ubuntu4
Replaces: libglib2.0-cil (<< 2.12.9-2)
Depends: libglib2.0-cil (= 2.12.10-2ubuntu4)
Filename: pool/main/g/gtk-sharp2/libglib2.0-cil-dev_2.12.10-2ubuntu4_i386.deb
Size: 2408
MD5sum: 50fa0825eb4d73593bdc8419c5fc9737
SHA1: f9659e85410505f7463a7117ebb92c70af6ad3aa
SHA256: 8f9d39465f2a1d5b4cc7832660ea53bacc681811ab2c80b57cad1655d4055b01
Description-en: CLI binding for the GLib utility library 2.12
This package provides the glib-sharp assembly that allows CLI (.NET) programs
to use the GLib utility library 2.12. This is mostly useful for the GTK+ and
GNOME bindings.
.
GTK# 2.10 is a CLI (.NET) language binding for the GTK+ 2.10 toolkit
.
This package contains development files for the glib-sharp library, and should
be used for compilation
Homepage: http://www.mono-project.com/GtkSharp
Description-md5: e7432bd7eb91c1c711c14150f81a3556
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 18m
如果需要,您可以对不完整的包名称使用命令行完成作为参数apt-cache show
而不是apt-get install
. 任何采用软件包名称的命令(无论软件包是否安装都采用它)都适用于此目的。
您需要的特定软件包
鉴于出现的消息,-dev
您需要的软件包可能是:
你可以在软件中心安装这些,但我推荐使用命令行,因为它更容易安装多个包:
sudo apt-get update && sudo apt-get install libglib2.0-dev libgdk-pixbuf2.0-dev libgtk-3-dev libcanberra-gtk3-dev libnotify-dev libx11-dev