私が書いている小さなテストプログラムで使用するGLEWを(make install
を使用して)ビルドしました(必要ならばソースはhereです)。私はちょうどGLEWライブラリが正しくインストールされたかどうかをチェックするためにlocate libGLEW.so
を走り、次の出力ました:C++プログラムが.soファイルに正しくリンクしていません
/usr/lib64/libGLEW.so
/usr/lib64/libGLEW.so.2.0
/usr/lib64/libGLEW.so.2.0.0
これは完全に正常であったが。私はそれから、次のコマンドを使ってコンパイルしました:
g++ main.cpp -o main -lglfw -lGLEW -lGL -lX11 -lpthread -lXi -g
これもエラーを投げませんでした。私はプログラムを実行しようとしたときただし、:ちょうど健全性チェックのために
./main: error while loading shared libraries: libGLEW.so.2.0: cannot open shared object file: No such file or directory
を、私はldd main | grep "GLEW"
を走り、案の定:
libGLEW.so.2.0 => not found
私は当初、これはリンカに問題があることができると考えましたライブラリを含むディレクトリを検索しません。だから私は、コマンドld --verbose | grep "/usr/lib64"
を走り、そこ必要なディレクトリを含むSEARCH_DIRた:
... SEARCH_DIR("=/usr/lib64"); ...
これは特に混乱しました。 -L/usr/lib64
オプションでコンパイルしようとしましたが、同じエラーメッセージが引き続き表示されます。私は、ライブラリへのシンボリックリンクが正しかったことを確認し、彼らは以下の通りであった。
lrwxrwxrwx 1 root root 16 Jul 15 10:22 libGLEW.so -> libGLEW.so.2.0.0
lrwxrwxrwx 1 root root 16 Jul 15 10:38 libGLEW.so.2.0 -> libGLEW.so.2.0.0
-rw-r--r-- 1 root root 707K Jul 15 10:22 libGLEW.so.2.0.0
私は正確に問題を引き起こしているが、私は私が正しくライブラリをインストールしていないことを信じることを始めているのかわからないです。私の目の前に答えがあるように感じますが、私はそれを見つけることができません。
ご協力いただきありがとうございます。 -Wl,-rpath=/usr/lib64
「uname -a」とは何ですか? –
@JohnHinrichsen Linux TRASHTOPB 4.8.0-58-ジェネリック#63〜16.04.1-Ubuntu SMP Mon Jun 26 18:08:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux – WickedJet