Package-Management

是否有任何自動工具可以安裝所需的庫以從原始碼編譯程序?

  • October 30, 2015

我想知道是否有任何工具,給定配置、cmake、autoconf 或您擁有的任何庫/依賴項匹配器的輸出;從您的發行版儲存庫中為您安裝所需的包/源。

換句話說,當您想從不知道需要哪些庫的原始碼建構程序時,一些工具可以為您解決庫依賴關係,根據您的 repo 安裝所需的包。

我給你一個隨機的例子:

前段時間我想使用Oprofile。它沒有為 Ubuntu 14.04 打包,所以我必須自己建構。

在 README 文件中,它說我必須先做 ./configure。我做了一次./configure,它拋出了一個錯誤,說“popt”庫沒有找到。我在網際網路上查找,我發現我必須為那個庫安裝哪個 deb 包,我安裝了它,然後我又做了 ./configure。

第二次,它再次拋出一個錯誤,說沒有找到自由庫。再次,我查找了我需要的庫,我發現對於 Ubuntu,它是 binutils-dev。但是當我嘗試安裝它時,它沒有工作。有趣的是,該庫在 ubuntu 12.04 的 binutils-dev 包中,但在 ubuntu 14.04 的 libiberty-dev 中。

第三次,我終於能夠編譯並執行程序了

不,它不能完全自動推斷依賴關係。

如果它被打包,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 依賴項。

引用自:https://unix.stackexchange.com/questions/186396