是否有任何自動工具可以安裝所需的庫以從原始碼編譯程序?
我想知道是否有任何工具,給定配置、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 依賴項。