2012-01-17 46 views
1

私はFedora 16を使用しています。私はfreeglutとfreeglut-develパッケージをインストールしました。 、私は簡単なOpenGLのプログラムをラム酒しようとしましたが、私はシンボル 'gluLookAt'への未定義の参照

gcc cube.c -o cube -lglut 
/usr/bin/ld: /tmp/ccSFol4w.o: undefined reference to symbol 'gluLookAt' 
/usr/bin/ld: note: 'gluLookAt' is defined in DSO /usr/lib/libGLU.so.1 so try adding it to the linker command line 
/usr/lib/libGLU.so.1: could not read symbols: Invalid operation 
collect2: ld returned 1 exit status 
+5

是非。あなたはgoogle'd '定義されていない参照'と言っていますが、これは解決策が出てこないのですか? StackOverflow自体にも、その質問を正確に尋ねる数千のエントリがあります。 – pmr

+0

なぜ誰かが興味を持っていない、または答えられないという質問を下すことによって、いつもそうだと思いますか?この質問は私にも同様の質問を解決するのに役立ちます。この質問と尋問者は尊重されるべきです。 – user2384994

答えて

2

いくつかのglライブラリをリンクする必要があります。

g++ cube.c -o cube -I /usr/lib/libglut.so.3 /usr/lib/libGL.so.1 /usr/lib/libGLU.so.1 -lGL 
2

はそれが

gcc cube.c -o cube -lglut -lGLU 
+0

ありがとう、しかし、私は次のエラーがあります。 /tmp/ccYMzpUF.o:Function 'drawbox'で:cube.c :(。text + 0x1a):glBeginのような未定義のリファレンス。glで始まるすべての関数をリストします。 –

+1

-lGLも追加します。あなたは本当にリンカーについて何かを読むべきです。 – stativ

+0

同じエラーが発生しています。 glBeginへの未定義参照。 –

2

は、私はあなたがコンパイラ、リンカーおよびライブラリにいくつか紹介テキストに相談すべきだと思う言って何をすべきか、次のエラーを取得していますすなわち、プログラムを構築するときにどのように一緒に来るのか。リンカは本質的に、いくつかの緩やかな終わりがあり、それらのためにプログラムのリンクを完了できないことを伝えています。ライブラリを追加するには、ライブラリファイルへのフルパスを与えるのではなく、ライブラリ名(あなたの場合はGLU)の-lスイッチを使用します。

0

私が書いたとき、私はUbuntuの12.04 LTSで正確に同じ問題を抱えて:

g++ square.cpp -lglut 

をしかし、私は、私はそれをしなかったので、一部の人々はまた、-lGLとlGLUを追加し、ウェブ上で発見し、それ今コンパイル:

g++ square.cpp -lglut -lGL -GLU 
+0

' gut'ライブラリは何をしますか? – genpfault

+1

もちろん、-lgutの代わりに-lglutにする必要があります。 OpenGLライブラリが必要です。詳しくはこちらをご覧ください: http://ja.wikipedia.org/wiki/OpenGL_Utility_Toolkit – zelgit

6

コンパイル:g++ sampleCode.cpp -lglut -lGL -lGLU

実行:./a.out

です。