2017-07-15 21 views
1

私が書いている小さなテストプログラムで使用する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

+0

「uname -a」とは何ですか? –

+0

@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

答えて

0

コンパイルは、DebianとUbuntuは/usr/lib64にシステムライブラリをインストールしていない、とあなたが使用するインストール手順は、それらのシステムのために間違っています。 (とにかくパッケージシステムをバイパスしているライブラリを/usrにインストールすることは良い考えではありません。/usr/local/libはデフォルトで(他のシステムとは異なり)検索されるので、ライブラリをそのディレクトリに移動できます。

+0

g ++によると、どちらも有効なコマンドラインオプションではありません。 – WickedJet

+0

これは単一のフラグです:https://stackoverflow.com/questions/6562403/i-dont-understand-wl-rpath-wl – JRG

0

+0

私は試してみましたが、プログラムはまだlibGLEW.soに正しくリンクされていません。 2.0。別のシステムでこれを試して、それが自分のコンピュータに問題があるかどうかを確認することがあります。 – WickedJet

+0

新しいエラーメッセージは何ですか? –

+0

前と同じですが、 '' main''を実行すると、libGLEW.so.2.0に正しくリンクされていません – WickedJet

関連する問題