9

私がここでいじっているパッケージはどちらかというと不明ですが、それでも問題はかなり一般的です。基本的に、私は Python モジュール (rql と呼ばれる) を C++ 拡張でコンパイルしようとしています。拡張機能は、いくつかのライブラリを含む gecode と呼ばれる外部フレームワークを使用します。gecode をコンパイルしてローカルにインストールしました。さて、出力がそれ自体を物語るようにしましょう:

red@devel:~/build/rql-0.23.3$ echo $LD_LIBRARY_PATH
/home/red/usr/lib
red@devel:~/build/rql-0.23.3$ ls $LD_LIBRARY_PATH | grep libgecodeint 
libgecodeint.so
libgecodeint.so.22
libgecodeint.so.22.0
red@devel:~/build/rql-0.23.3$ python setup.py build
running build
running build.py
package init file './test/__init__.py' not found (or not a regular file)
running build_ext
building 'rql_solve' extension
g++ -pthread -shared build/temp.linux-i686-2.5/gecode-solver.o -lgecodeint -lgecodekernel -lgecodesearch -o build/lib.linux-i686-2.5/rql_solve.so
/usr/bin/ld: cannot find -lgecodeint
collect2: ld returned 1 exit status
error: command 'g++' failed with exit status 1
4

2 に答える 2

14

LD_LIBRARY_PATH実行時リンカー/ローダー用です (同じ効果が で実現できますldconfig)。必要なのは-Lフラグです:

-L/home/red/usr/lib

コンパイラ コマンド ラインで。

編集:

そして-思い出させてくれた@bjgに感謝-LIBRARY_PATHコンパイラオプションをいじりたくない場合に使用できます。

于 2010-07-10T23:20:58.780 に答える
1

LD_LIBRARY_PATHホーム ディレクトリの非標準の場所を指すように変更したようです。LD_LIBRARY_PATHsetup.py で g++ を呼び出すために使用される環境がシェルの環境と一致するかどうか知っていますか?

に引数を渡しsetup.pyてライブラリ パスを変更できるかどうか、または単に-L/home/red/usr/libg++ に渡すことができるかどうかを確認してください。

于 2010-07-10T23:20:26.207 に答える