从源代码构建软件时如何找到依赖项?

这就是我所做的。 我下载了foxtrotgps.1.1.1.tar.gz,因为它是最新的/home/crash/usr/local.src我把它作为目录/foxtrotgps.1.1.1提取到我的/ home / crash / usr / local / src

然后我检查了所有必需的包以获得正确的级别,他们是或者如果缺少,我添加了它们。

然后我转到FTGPS目录并执行./configure,然后它到达它所说的位置;

No package 'gtk+-2.0' found No package 'gdk-2.0' found No package 'gthread-2.0' found 

但是那里有gtk + -2.0,但是我找不到gdk或gthread。 它停了下来,无处可去。 我做错了什么 – 我错过了什么包依赖?

附带条件

我假设您使用的是最新版本的ubuntu,例如12.04。 存储库中的版本被认为是稳定的 – 因此您可能希望使用该版本。

但是,如果您喜欢生活在最前沿 – 从PPA进行编译或安装是最佳选择。 请记住,此路线可能会使您的系统处于潜在的不稳定状态。

如何编译

您需要安装它的依赖项如下:

 sudo apt-get install autotools-dev intltool libbluetooth-dev libcurl4-gnutls-dev libexif-dev libgconf2-dev libglade2-dev libgps-dev libgtk2.0-dev libsoup2.4-dev libsqlite3-dev libxml2-dev 

还记得安装包build-essential

 sudo apt-get install build-essential 

所以我怎么知道

……好吧,我有点被骗了。

在packages.ubuntu.com上搜索您的包 – 我在foxtrotgps存储库中查找了foxtrotgps

在此处输入图像描述

查看资源并查找debian.tar.xz文件。 单击它 – 它将在归档管理器中打开。 导航到debian文件夹中的control文件。

在此处输入图像描述

在构建依赖部分是Launchpad构建源所需的包 – 它与您需要安装的包相同。

有时您可以编译新版本而不使用PPA作为源依赖项,并在Ubuntu中使用强大的build-depfunction。 确保选择了源包,并在sources.list文件中包含以下行:

 deb-src http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse 

您可以通过输入终端cat /etc/apt/sources.list

我已经成功编译了Stellarium 0.11.3Scummvm 1.5.0和其他通过build-dep获取依赖build-dep ; 例如:

sudo apt-get build-dep scummvm

对于已存储在存储库中的软件包,您可以使用以下命令检查依赖项:

apt-cache show foxtrotgps

并将其与新版本所需的依赖项进行比较 ,该版本将在程序的网站上列出,或者在源代码下载的自述文件中列出。

通常,当通过build-dep方法获取依赖项时,必须从程序的站点下载稳定的源代码 ,而不是开发或git版本。 以这种方式编译新版本并不总是可行,但值得尝试。 (例如,Gimp 2.8需要更高版本的Gtk,并且使用Precise的源文件无法满足。)

但是,我已经成功地为Foxtrotgps使用了build-dep方法; 只需按照以下步骤操作(假设您已经安装了build-essential ):

  • 从Foxtrot站点下载最新的稳定源代码(目前版本1.1.1)

  • 打开终端并输入sudo apt-get build-dep foxtrotgps

  • 使用tar xzvf 解压缩下载的源代码并cd到foxtrot文件夹。 然后运行以下三个命令:
  • ./configure
  • make
  • sudo checkinstall (如果没有,请安装checkinstall ,或者使用sudo make install

下面是已编译程序的屏幕截图,foxtrotgps:

狐步舞