2011-12-17 50 views
3

我想安裝一個rubygem,它一直試圖讀取一個不可用的庫。如何使libtool指向用戶安裝的庫?

grep: /usr/lib64/libgdbm.la: No such file or directory /bin/sed: can't read /usr/lib64/libgdbm.la: No such file or directory libtool: link: /usr/lib64/libgdbm.la' is not a valid libtool archive

爲了解決這個問題,我安裝我自己的libgdbm並在makefile LDFLAGS,但無濟於事提供給的libgdbm的路徑。

任何幫助,非常感謝。

回答

1

這rubygem似乎做髒東西,因爲任何干淨的庫搜索(-L或pkg-config)會產生一個消息,如「庫/軟件包gdbm找不到」。尤其是la文件上的grep-and-sed過程看起來很髒。確保聖誕老人知道這個寶石的作者今年沒有收到禮物。

該寶石可能有硬編碼libtool檔案的路徑。首先,嘗試在寶石的Makefile中尋找/usr/lib64/libgdbm.la。更改硬編碼路徑,並確保安裝腳本對任何系統目錄沒有寫權限,因爲它似乎與sed s一起運行。

+0

感謝您的答覆之前運行它。我沒有這臺機器的管理員權限。我研究了libtool,並且有一個目錄列表,它們看起來像所需庫的搜索路徑。但是,我不知道如何確保在安裝gem時安裝的gdbm庫在那裏結束。任何線索? – Ketan 2011-12-17 15:13:08

1

Libtool需要熟悉您的編譯器套件和操作系統,以便能夠創建共享庫並正確鏈接它們。安裝libtool發行版時,系統特定的libtool腳本會安裝到您的二進制目錄中。 但是,當您使用自己的軟件包分發libtool時,並不總是知道用於編譯軟件包的編譯器套件和操作系統。

因此,必須先配置libtool,然後才能使用它。任何使用GNU配置腳本的人都應該熟悉這個想法。 configure會爲系統功能運行許多測試,然後生成Makefiles(也可能是一個config.h頭文件),然後可以運行make並生成軟件包。

Libtool將自己的測試添加到您的配置腳本中,以便爲安裝程序的主機生成libtool腳本。爲此,你可以在configure.ac中使用LT_INIT宏。

因此,在短期,如果你的軟件包有配置文件,運行使

make distclean //clean up all the previous generated files 
autoconf //or autoreconf to generate configure script from configure.ac and configure.in 
automake //to generate new Makefile.in from Makefile.ac 
./configure //to generate new Makefile and libtool