0

root アクセス権を持っていないネットワーク上にいくつかのソフトウェア (つまり、python モジュールのグラフ ツール、http://projects.skewed.de/graph-tool/ ) を構築しようとしています。そこで、 --prefix フラグと --with-include フラグ、および CPPFLAGS と LD_LIBRARY_PATH 環境変数を使用して、すべての依存関係を自分でローカル ディスクにインストールしました。

それを行った後、依存関係の1つが見つからないという奇妙なエラーが発生します(つまり、CGAL: http://www.cgal.org/ )。

構成スクリプトはchecking for main in -lCGAL... no、メイクファイルは、膨大な数のコンパイラ警告を出力した後、次のように失敗します。/usr/bin/ld: cannot find -lCGAL

おそらく、これは単にインストールされたライブラリが見つからないことを意味します。これが発生する他のほとんどすべてのインスタンスで、Google は、ライブラリへのシンボリック リンクが正しく設定されていないことを明らかにしています。ここで正しく設定されているようです:

truffles:rlaplant[147] echo $LD_LIBRARY_PATH
/local_mount/space/truffles/1/users/rlaplant/graphtool/parts/lib:/local_mount/space/truffles/1/users/rlaplant/graphtool/parts/
truffles:rlaplant[160] file parts/lib/libCGAL.so
parts/lib/libCGAL.so: symbolic link to `libCGAL.so.10'

何が悪いのか本当にわかりません。LD_LIBRARY_PATH の使用方法に問題があるのではないでしょうか?

4

1 に答える 1

0

私は自分の問題が何であるかを理解したと思います。

libCGAL.so は動的にリンクされたライブラリですが、コンパイル スクリプトが実際に行っているのは、それを静的ライブラリであるかのように扱っていることです。これができるとは知りませんでした。静的にリンクされたライブラリである場合、動的にリンクすることはできず、その逆もあり得ると思いました (これは通常、実際には当てはまると思います)。

ここで行ったことは、実行/リンク時に動的にリンクされたライブラリを検索する LD_LIBRARY_PATH ではなく、静的ライブラリを検索する LIBRARY_PATH を設定することでした。configure スクリプトが、面白い接頭辞を使ってここでやろうとしていることを考慮して書かれていれば、この区別は意味がないと思います。これは静的リンクと動的リンクの両方で機能することがわかりますが、LD_LIBRARY_PATH 環境変数は機能しません (ただし、そうではない可能性があります)。

于 2013-03-07T21:15:12.037 に答える