
Ubuntu日本語フォーラム

ログインしていません。
●環境
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 で終了しました
これらのライブラリがないのか?
ライブラリを探すディレクトリの指定が足りないのか?
調べる方法を教えて下さい。
オフライン
追加です。
/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.* がインストールされないのか、他のディレクトリーにされたのか?
見当のつく方、よろしくお願いします。
オフライン
追加です。
$ 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
---------------------------------------------------------------
何か、アドバイスいただければと思います。
オフライン
追加です。
ライブラリ本体のインストール先ですが、
/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
何か、アドバイスいただければと思います。
オフライン
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 パッケージをインストールすればいいことが分かります。
オフライン
ありがとうございました。
$ gcc -o test test.c -lglut でコンパイル出来ました。
以上
オフライン