質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.45%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

Q&A

解決済

1回答

6266閲覧

error while loading shared libraries の原因が知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

0グッド

0クリップ

投稿2021/10/04 02:30

編集2021/10/04 02:35

提示コードですがコンパイル、リンクは通るのですが実行エラーでます、これはなぜでしょうか?参考サイトを参考に追加のパッケージをインストールしましたが依然として エラーが出ます。ファイルディレクトリがないと言われているのですが。これはなぜでしょうか?

./GL: error while loading shared libraries: libGLEW.so.1.13: cannot open shared object file: No such file or directory

参考サイト: https://www.jianshu.com/p/fa83a15949b8

参考サイト: https://stackoverflow.com/questions/43079912/zed-sdk-error-while-loading-shared-libraries-libglew-so-1-13-cannot-open-share

$ sudo apt-cache search libGLEW glew-utils - OpenGL Extension Wrangler - ユーティリティ libglew2.1 - OpenGL Extension Wrangler - runtime environment libglew-dev - OpenGL Extension Wrangler - development environment libglewmx-dev - OpenGL Extension Wrangler MX - development environment libglewmx1.13 - OpenGL Extension Wrangler (Multiple Rendering Contexts)
$ sudo find / -name libGLEW.so.1.13 -type f find: ‘/run/user/1000/doc’: 許可がありません find: ‘/run/user/1000/gvfs’: 許可がありません
PRG :=GL SRC_DIR :=source OBJ_DIR :=obj DEP_DIR :=obj DEP :=$(wildcard $(DEP_DIR)/*.d) SRC :=$(wildcard $(SRC_DIR)/*.cpp) OBJ :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC)))) LDFLAGS :=`pkg-config --libs=opengl glew glfw3 freetype2` $(PRG): $(OBJ) #$(CXX) $^ -l ncurses -o $@ $(CXX) $^ -o $@ -L/usr/local/lib -lGLU -lGL -lglfw3 -lpthread -lGL -lGLEW -lfreetype -ldl -lX11 $(OBJ_DIR)/%.o: source/%.cpp #$(CXX) -std=c++2a -I/usr/local/include/freetype2 -I/usr/include/libpng16 -I/usr/local/include -c -MMD -MP $< -o $@ $(CXX) -std=c++2a -c -MMD -MP $< -o $@ -include $(DEP) clean: rm -f ./$(OBJ_DIR)/*.o *.out ./$(OBJ_DIR)/*.d *.a $(PRG)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2021/10/04 02:49

find しても見つからないということは、一度 glew をインストールして消しましたか? 「apt-cache search 」はインストールできるパッケージを表示しているだけで、質問者さんの環境のインストール状態には無関係です。
jbpb0

2021/10/04 03:15 編集

> sudo apt-cache search libGLEW aptでインストールした「libGLEW」関連の情報は、下記を実行したら分かると思います dpkg -l libGLEW dpkg -L libGLEW 前者でインストールされてるバージョンが、後者でインストールされたそれぞれのファイルがどこにあるのかが分かるはず (sudoが必要なら、付けてください)
退会済みユーザー

退会済みユーザー

2021/10/04 03:13

なるほど。-pthreadをコンパイル、リンクに追加しましたがかわりません。
退会済みユーザー

退会済みユーザー

2021/10/04 03:15

このように表示されます。つまりインストールされていないとうことでしょうか? $ dpkg -l libGLEW dpkg-query: libGLEW に一致するパッケージが見つかりません shigurechan@shigurechan-System-Product-Name:~/prg/GL$ dpkg -L libGLEW dpkg-query: パッケージ 'libglew' はまだインストールされていません Use dpkg --contents (= dpkg-deb --contents) to list archive files contents.
jbpb0

2021/10/04 03:59 編集

> インストールされていないとうことでしょうか? 間違えました ごめんなさい パッケージ名は「libGLEW」ではなく、「sudo apt-cache search libGLEW」の実行結果で5行表示されてる、各行の一番左のものです たとえば、「glew-utils」なら、 dpkg -l glew-utils dpkg -L glew-utils と実行します 5行表示されてるそれぞれで、上記のように実行してみてください どれか入ってるかも
int32_t

2021/10/04 04:10 編集

libGLEW.so.2.1 のパッケージインストールはできていたようなので、次は libGLEW.so.1.13 を参照している犯人を見つける必要があります。まずは、 % ldd GL (GL は質問者さんがビルドした実行ファイル) を実行してみて、libGLEW.so.1.13 を参照しているかどうかチェックしてください。(参照していないと予想)
退会済みユーザー

退会済みユーザー

2021/10/04 04:18

なるほど。以下ようにしましたが参照していますか? インデント部のコードです $ ldd GL linux-vdso.so.1 (0x00007fff432ce000) libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007fa10d780000)        libGLEW.so.1.13 => /lib/libGLEW.so.1.13 (0x00007fa10d6d6000) libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x00007fa10d61e000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa10d618000) libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007fa10d4db000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa10d2f9000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa10d1a8000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa10d18d000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa10d16a000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa10cf78000) libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007fa10cec0000) libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007fa10ce8c000) libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007fa10ce52000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa10ce36000) /lib64/ld-linux-x86-64.so.2 (0x00007fa10d8d7000) libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fa10ce0c000) libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007fa10ce06000) libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fa10cdfe000) libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fa10cde2000)
int32_t

2021/10/04 04:24

/lib/libGLEW.so.1.13 があるではないですか。よく見たら find の使い方も間違ってますね。 % file /lib/libGLEW.so.1.13 を実行してこのファイルが何者か確認しましょう。 (32bit版なのではないかと予想) libGLEWをソースからビルドして/にインストールしたことがありますか? もう環境がぐちゃぐちゃですね。
退会済みユーザー

退会済みユーザー

2021/10/04 04:30

指示通り以下のコマンドを実行したところエラーでました。 glew ならびに各ライブラリはソースファイルをダウンロードしてインストールしました。 環境がぐちゃぐちゃとはどういったところがぐちゃぐちゃなのでしょうか?またその場合は初期化でしょうか? $ dpkg -L glew-utils file /lib/libGLEW.so.1.13 /. /usr /usr/bin /usr/bin/glewinfo /usr/bin/visualinfo /usr/share /usr/share/doc /usr/share/doc/glew-utils /usr/share/doc/glew-utils/README.md.gz /usr/share/doc/glew-utils/copyright /usr/share/doc/glew-utils/changelog.Debian.gz /. /usr /usr/bin /usr/bin/file /usr/share /usr/share/bug /usr/share/bug/file /usr/share/bug/file/control /usr/share/bug/file/presubj /usr/share/doc /usr/share/doc/file /usr/share/doc/file/README.Debian /usr/share/doc/file/README.gz /usr/share/doc/file/copyright /usr/share/man /usr/share/man/man1 /usr/share/man/man1/file.1.gz /usr/share/doc/file/changelog.Debian.gz dpkg-query: エラー: --listfiles は有効なパッケージ名を必要としますが、`/lib/libGLEW.so.1.13' はそうではありません: 指定子 '/lib/libGLEW.so.1.13' に不正なパッケージ名があります: 英数字の文字で始まらなければなりません パッケージ照会についてのヘルプには、--help を使用してください。
jbpb0

2021/10/04 04:36

> dpkg -L glew-utils file /lib/libGLEW.so.1.13 違いますよ dpkg -L glew-utils と file /lib/libGLEW.so.1.13 は、別のもの
退会済みユーザー

退会済みユーザー

2021/10/04 04:37 編集

失礼しました。 $ dpkg -L glew-utils /. /usr /usr/bin /usr/bin/glewinfo /usr/bin/visualinfo /usr/share /usr/share/doc /usr/share/doc/glew-utils /usr/share/doc/glew-utils/README.md.gz /usr/share/doc/glew-utils/copyright /usr/share/doc/glew-utils/changelog.Debian.gz
jbpb0

2021/10/04 04:43

> glew ならびに各ライブラリはソースファイルをダウンロードしてインストールしました。 あれ? aptで入れたのではないのですか それなら、「dpkg -L...」で確認しても、意味は無いです それは、aptでインストールしたファイルがどこにあるのかを表示するコマンドなので てっきり、質問に「sudo apt-cache search libGLEW」と書かれてたので、aptで入れたのだと思ってました
退会済みユーザー

退会済みユーザー

2021/10/04 04:46

諸事情等でpcを初期化したので
jbpb0

2021/10/04 04:46

int32_tさんが書かれてるように、下記を実行してみてください file /lib/libGLEW.so.1.13
guest

回答1

0

ベストアンサー

参考サイトより
sudo ln -f -s /usr/lib/x86_64-linux-gnu/libGLEW.so.2.1 /usr/lib/libGLEW.so.1.13
コマンドを使ってシンボルクリックを作成したら動きました。

参考サイト: https://askubuntu.com/questions/1021585/linking-libglew-so-2-0-5-to-libglew-so-1-13

投稿2021/10/04 03:33

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2021/10/04 03:52

いやいや、メジャーバージョンが違うものをシンボリックリンクしてはダメですよ。たまたま一部の機能は動くかもしれませんが、まったくもって間違った対処です。
退会済みユーザー

退会済みユーザー

2021/10/04 03:54

質問ですがではどうすればいいのでしょうか?
jbpb0

2021/10/04 04:08 編集

質問者さん 「質問への追記・修正の依頼」に書いた確認コマンドを訂正したので、それやってみて、見つからないファイルを含むパッケージのどれかがインストールされてないか、確認してみてください
退会済みユーザー

退会済みユーザー

2021/10/04 04:19

はい。実行してみました。 $ dpkg -l glew-utils 要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持 | 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留 |/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常) ||/ 名前 バージョン アーキテクチ 説明 +++-==============-============-============-===================================== ii glew-utils 2.1.0-4 amd64 OpenGL Extension Wrangler - utilities
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.45%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問