从源代码构建软件时如何找到依赖项?
这就是我所做的。 我下载了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-dep
function。 确保选择了源包,并在sources.list文件中包含以下行:
deb-src http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse
您可以通过输入终端cat /etc/apt/sources.list
。
我已经成功编译了Stellarium 0.11.3
, Scummvm 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: