お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2014-01-22 14:10:05

chung
新しいメンバ
登録日: 2014-01-22

OpenGL関連のコードのコンパイルがエラーになります。

●環境
PC:Windwos7 32bit
VMware のゲストOS:Ubuntu 12.04.2

●状況
OpenGL関連のコードをコンパイルしたのですが下記のエラーになります。
-------------------------------------------------------------------------
chung@pi:~$ gcc -lglut -o test test.c
/tmp/ccSa38pm.o: In function `main':
test.c:(.text+0x17): undefined reference to `glutInit'
test.c:(.text+0x24): undefined reference to `glutCreateWindow'
test.c:(.text+0x29): undefined reference to `glutMainLoop'
collect2: ld はステータス 1 で終了しました
-------------------------------------------------------------------------

●その状態に至るまでの操作

#必要なものをインストール
$ sudo apt-get update
$ sudo apt-get install build-essential
$ sudo apt-get install freeglut3-dev libglew1.5-dev libxmu-dev libxi-dev

#コードの作成
$ gedit test.c

/*test.c*/
#include <GL/glut.h>
int main(int argc,char *argv[])
{
/*初期化*/
glutInit(&argc,argv);
/*ウィンドウ作成*/
glutCreateWindow(argv[0]);
/*メインループ*/
glutMainLoop();
return 0;
}

#コンパイル
$ gcc -lglut -o test test.c
/tmp/ccSa38pm.o: In function `main':
test.c:(.text+0x17): undefined reference to `glutInit'
test.c:(.text+0x24): undefined reference to `glutCreateWindow'
test.c:(.text+0x29): undefined reference to `glutMainLoop'
collect2: ld はステータス 1 で終了しました

これらのライブラリがないのか?
ライブラリを探すディレクトリの指定が足りないのか?
調べる方法を教えて下さい。

オフライン

 

#2 2014-01-22 15:14:15

chung
新しいメンバ
登録日: 2014-01-22

Re: OpenGL関連のコードのコンパイルがエラーになります。

追加です。

/usr/lib に、libglut.so.* がありませんでした。
$ sudo apt-get install freeglut3-dev 
のコマンドでインストールされるはずではないでしょうか?

/usr/include/GL には、freeglut.h freeglut_ext.h freeglut_std.h glut.h がありました。

再度試してみましたが、インストールされませんでした。
----------------------------------------------------------------
chung@pi:~$ sudo apt-get install freeglut3-dev
[sudo] password for chung:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
freeglut3-dev はすでに最新バージョンです。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  linux-headers-3.2.0-37 linux-headers-3.2.0-37-generic-pae
これらを削除するには 'apt-get autoremove' を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
----------------------------------------------------------------

なぜ、libglut.so.* がインストールされないのか、他のディレクトリーにされたのか?
見当のつく方、よろしくお願いします。

オフライン

 

#3 2014-01-22 16:07:22

chung
新しいメンバ
登録日: 2014-01-22

Re: OpenGL関連のコードのコンパイルがエラーになります。

追加です。

$ sudo apt-get install libglew1.5-dev でインストールされるファイルを探してみました。

/usr/include/GL には、glew.h, glxew.h, wglew.h がインストールされました。
/usr/lib には、libGLEW.so.* がインストールされませんでした。

なぜか、ヘッダファイルだけインストールされて、ライブラリ本体はインストールされていないようです。

権限の問題でもないと思いますが・・・
---------------------------------------------------------------
chung@pi:~$ ls -all /usr/
合計 132
drwxr-xr-x  10 root root  4096  2月 16  2013 .
drwxr-xr-x  23 root root  4096  1月 22 10:12 ..
drwxr-xr-x   2 root root 36864  1月 22 13:00 bin
drwxr-xr-x   2 root root  4096  2月 16  2013 games
drwxr-xr-x  41 root root 16384  1月 22 11:59 include
drwxr-xr-x 174 root root 36864  1月 22 15:57 lib
drwxr-xr-x  10 root root  4096  2月 16  2013 local
drwxr-xr-x   2 root root 12288  1月 22 11:08 sbin
drwxr-xr-x 281 root root 12288  1月 22 13:00 share
drwxr-xr-x   6 root root  4096  1月 22 10:12 src
---------------------------------------------------------------

何か、アドバイスいただければと思います。

オフライン

 

#4 2014-01-22 17:25:44

chung
新しいメンバ
登録日: 2014-01-22

Re: OpenGL関連のコードのコンパイルがエラーになります。

追加です。

ライブラリ本体のインストール先ですが、
/usr/lib ではなく、/usr/lib/i386-linux-gnu でした。

でも、下記のようにリンクを貼ってコンパイルしてみましたが、同じ結果でした。
$ sudo ln -s /usr/lib/i386-linux-gnu/libglut.so /usr/lib/libglut.so
$ sudo ln -s /usr/lib/i386-linux-gnu/libGL.so /usr/lib/libGL.so

何か、アドバイスいただければと思います。

オフライン

 

#5 2014-01-22 17:27:11

epii
メンバ
登録日: 2008-12-11

Re: OpenGL関連のコードのコンパイルがエラーになります。

chung による投稿:

chung@pi:~$ gcc -lglut -o test test.c

gcc では -l オプションは後ろにつけます。

$ gcc -o test test.c -lglut

とすればコンパイルできるはずです。
なぜ後ろにつけなくてはいけないかについては、ご自分で調べてみてください。

また、

chung による投稿:

これらのライブラリがないのか?
ライブラリを探すディレクトリの指定が足りないのか?
調べる方法を教えて下さい。

については、apt-file コマンドが便利でしょう。

$ apt-file search libglut
abi-compliance-checker: /usr/share/abi-compliance-checker/modules/Targets/unix/descriptors/libglut.xml
freeglut3: /usr/lib/x86_64-linux-gnu/libglut.so.3
freeglut3: /usr/lib/x86_64-linux-gnu/libglut.so.3.9.0
freeglut3-dev: /usr/lib/x86_64-linux-gnu/libglut.a
freeglut3-dev: /usr/lib/x86_64-linux-gnu/libglut.so
mingw-w64-i686-dev: /usr/i686-w64-mingw32/lib/libglut.a
mingw-w64-i686-dev: /usr/i686-w64-mingw32/lib/libglut32.a

freeglut3 パッケージをインストールすればいいことが分かります。

オフライン

 

#6 2014-01-22 18:15:12

chung
新しいメンバ
登録日: 2014-01-22

Re: OpenGL関連のコードのコンパイルがエラーになります。

ありがとうございました。

$ gcc -o test test.c -lglut でコンパイル出来ました。

以上

オフライン

 

Board footer

Powered by FluxBB