是否有任何自动工具可以安装所需的库以从源代码编译程序?

是否有任何自动工具可以安装所需的库以从源代码编译程序?

我想知道是否有任何工具可以根据配置、cmake、autoconf 或您拥有的任何库/依赖项匹配器的输出;从您的发行版存储库中为您安装所需的包/源。

换句话说,当您想要从源代码构建一个不知道需要哪些库的程序时,有一些工具可以为您解决库依赖关系,根据您的存储库安装所需的软件包。

我给你一个随机的例子:
前段时间我想用奥剖面。它不是为 Ubuntu 14.04 打包的,所以我必须自己构建。
在自述文件中,它说我必须先执行 ./configure 。我执行了 ./configure 一次,它抛出一个错误,指出未找到“popt”库。我在互联网上查找,发现我必须为该库安装哪个 deb 软件包,我安装了它并再次执行了 ./configure。
第二次,它再次抛出错误,指出未找到自由库。再次,我查找了我需要的库,我发现对于 Ubuntu,它是 binutils-dev。但是当我尝试安装它时,它不起作用。有趣的是,该库位于 ubuntu 12.04 的 binutils-dev 软件包中,但 ubuntu 14.04 的 libiberty-dev 软件包中。
第三次,我终于能够编译并运行程序了

答案1

不,它不能完全自动推断依赖关系。

如果它被包装起来,apt-get build-dep oprofile会有帮助。如果您可以在其他地方找到包,则可以在那里查找依赖项。例如,如果该包存在于您的发行版的下一个版本中。例如这里:

http://archive.ubuntu.com/ubuntu/pool/universe/o/oprofile/oprofile_1.0.0-0ubuntu9.dsc

(如果您打算自己编译,请务必先考虑升级到最新版本!)

除此之外,它需要一点经验才能弄清楚。configure不幸的是,脚本不会告诉您包名称,但通常很容易找到。还可以使用分发网页上的搜索功能 - 它们可以告诉您哪些包包含特定的文件名。

与其反复configure尝试,查看configure.ac生成脚本的文件可能更方便(通常是很多更短)。您可能会发现只有在安装了某些库并给出了一些标志时才提供一些可选功能。

LIBERTY_LIBS="-liberty $DL_LIB $INTL_LIB"
BFD_LIBS="-lbfd -liberty $DL_LIB $INTL_LIB $Z_LIB"
POPT_LIBS="-lpopt"

是典型的库依赖项。

AC_ARG_ENABLE(gui,[  --enable-gui  compile with gui component (qt3|qt4|yes|no),
         if not given or set to yes, gui defaults to qt3],, enable_gui=qt3)

表示如果您想要 GUI,您可能还需要考虑 QT 依赖性。

相关内容