2011-12-17 8 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をインストールし、メイクファイルのLDFLAGSではなく、無駄にlibgdbmへのパスを提供します。

ご迷惑をおかけして申し訳ありません。

答えて

1

クリーンなライブラリ検索(-Lまたはpkg-config)で "library/package gdbm not found"のようなメッセージが表示されるため、このrubygemは汚れているようです。特に、laファイルのgrep-and-sedプロシージャは本当に汚いようです。今年、この宝石の作者にはプレゼントがないとサンタが知っていることを確認してください。

gemにはおそらくlibtoolアーカイブへのパスがハードコードされています。まず、宝石のMakefile/usr/lib64/libgdbm.laのgrepを試みてください。ハードコードされたパスを変更し、sedでワイルドに実行されているように見えるので、インストールスクリプトにシステムディレクトリに対する書き込み権限がないことを確認してください。

+0

感謝を作る実行する前にそれを実行している場合。私はこのマシンの管理者権限を持っていません。私はlibtoolを調べましたが、必要なライブラリの検索パスのようなディレクトリのリストがあります。しかし、gemをインストールする際にインストールしたgdbmライブラリがインストールされていることを確認する方法はわかりません。すべての手がかりは? – Ketan

1

Libtoolは、共有ライブラリを作成して適切にリンクするために、コンパイラスイートとオペレーティングシステムに関する詳細な知識が必要です。 libtoolディストリビューションをインストールすると、システム固有のlibtoolスクリプトがバイナリディレクトリにインストールされます。 しかし、独自のパッケージでlibtoolを配布する場合、パッケージをコンパイルするために使用されるコンパイラスイートとオペレーティングシステムが常に分からないことがあります。

このため、libtoolを使用する前に設定する必要があります。この考え方は、GNU configureスクリプトを使った人にとっては馴染み深いものです。 configureは、システム機能のためにいくつかのテストを実行した後、Makefiles(そして場合によってはconfig.hヘッダファイル)を生成します。その後makeを実行してパッケージをビルドします。

Libtoolは、インストーラのホストマシン用のlibtoolスクリプトを生成するために、独自のテストをconfigureスクリプトに追加します。このためには、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 
関連する問題