为什么我不能在Ubuntu 12.04中编译Drwright

Ide*_*kiy 3 compilation configure package ubuntu-12.04

Drwright不包含在主要的Ubuntu发行版中,但可以通过PPA获得.这样安装步骤:

   sudo add-apt-repository ppa:drwright/stable 
   sudo apt-get update
   sudo apt-get install drwright
Run Code Online (Sandbox Code Playgroud)

安装成功完成.

但我想纠正这个程序的源代码.我使用apt-get source drwright下载它.首先,我尝试编译源代码而不做任何更改:

   ./configure
Run Code Online (Sandbox Code Playgroud)

但配置不执行:

configure: error: Package requirements (
  glib-2.0 >= 2.31.13
  gio-2.0 >= 2.31.13
  gdk-pixbuf-2.0 >= 2.25.3
  gtk+-3.0 >= 3.0.0
  libcanberra-gtk3 >= 0
  libnotify >= 0.7
  x11) were not met:

No package 'glib-2.0' found
No package 'gio-2.0' found
No package 'gdk-pixbuf-2.0' found
No package 'gtk+-3.0' found
No package 'libcanberra-gtk3' found
No package 'libnotify' found
No package 'x11' found
Run Code Online (Sandbox Code Playgroud)

为什么Drwring从PPA安装并成功运行,但我无法从源代码编译它?

Eli*_*gan 7

头文件

要从源代码构建程序,您不仅需要为其使用的库编译二进制文件.您还需要他们的头文件.

在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
Run Code Online (Sandbox Code Playgroud)

然后输入一个可以安装包的命令,只需要名称的开头 - 无论你认为多少,你都知道.例如,对于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
Run Code Online (Sandbox Code Playgroud)

在那里,我没有运行我输入的命令.(如果有的话,它不会成功,因为没有被调用的包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
Run Code Online (Sandbox Code Playgroud)

如果需要,可以使用不完整包名称上的命令行完成作为参数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
Run Code Online (Sandbox Code Playgroud)