請問用gcc編譯C+OpenGL programs

如果您覺得您的問題不屬於 debian desktop 或是 debian server 版的範圍內,請在這裡發問。

版主: mufa

請問用gcc編譯C+OpenGL programs

文章wilson_shao » 週日 6月 19, 2005 1:04 am

安裝debian後,
在/usr/lib已有mesa libraries.
但在/usr/include/卻沒有GL header files.

我用glxinfo看到版本為Mesa 4.0.4,
就到sourceforge download相應版本的MesaLib和MesaDemo,
將其中include/中的GL/放到/usr/include/.

但我用
gcc xxx.c
編譯時卻出現大量這類error messages:
/tmp/ccSOLYm7.o(.text+0xd2e): In function `Diamond':
: undefined reference to `glBegin'
/tmp/ccSOLYm7.o(.text+0xd42): In function `Diamond':
: undefined reference to `glVertex2i'
/tmp/ccSOLYm7.o(.text+0xd56): In function `Diamond':
: undefined reference to `glVertex2i'

在我的xxx.c中, 只有#include<GL/glut.h>.

請問怎樣解決這個編譯問題?
謝謝.
wilson_shao
可愛的小學生
可愛的小學生
 
文章: 11
註冊時間: 週五 6月 17, 2005 1:51 pm

文章wsun013 » 週日 6月 19, 2005 1:21 am

MesaLib 要 build 之後, 應該會有兩塊
一塊是 lib, 一塊是 lib-dev
lib 是當你的app 有用到mesa, 在要跑, 和跑時, 如果有要的functional call, 會以ref. 的方式用到他們

而 lib-dev 是提供您programming interfaces 用的
如果直接把 include/ 丟下去, 就會像您去住不屬於於您的房子, 會出問題的
所以解決的方法:

1. 找找看有沒有 GL 的 developemnt library, 通常為 libxxxxxx-dev
eg.
xlibmesa-dev - XFree86 Mesa development libraries dummy package
xlibosmesa-dev - Mesa off-screen rendering library development files [XFree86]
xlibmesa-glu-dev - Mesa OpenGL utility library development files [X.Org]
xlibmesa-gl-dev - Mesa 3D graphics library development files [X.Org]

或者

2. build/install 從sf.net 抓下來的source
再build 您的 app.

上面是我的推測, 希望答案能另您滿意
啊. 這不是奇摩知識嗎!? :shock:
------BEGIN GEEK CODE BLOCK------
Version: 3.12
GE d->++ s: a-- C+++>++++ UL>++++ P>++++ L++>++++ E---- W+ N@ o K- w++(+)
O- M- V? PS+++(+) PE++(+) Y-- PGP- t>--- 5? X+++ R- tv-(--) b+ DI? D+ G e++>++++
h+(!) r++(%) y*>++++
-------END GEEK CODE BLOCK-------
頭像
wsun013
快樂的大學生
快樂的大學生
 
文章: 784
註冊時間: 週二 9月 14, 2004 12:12 pm
來自: 紐西蘭

文章209088970 » 週日 6月 19, 2005 5:46 pm

代碼: 選擇全部
apt-get install libglut3-dev xlibs-dev

這樣apt-get會自動補齊所有套件

※注意:顯示卡的driver要編好,不然編opengl程式會編不成功,而且要開啟顯示卡的3d加速,否則將不能執行opengl程式

*.c內要include的檔

#include <GL/glut.h> // Header File For The GLUT Library
#include <GL/gl.h> // Header File For The OpenGL32 Library
#include <GL/glu.h> // Header File For The GLu32 Library
#include <unistd.h> // Header File For sleeping.


寫好*.c後,執行

gcc -Wall -I/usr/include/ -c -o OPENGL.o OPENGL.c

gcc -Wall -I/usr/include/ -o OPENGL -L/usr/X11R6/lib OPENGL.o -lX11 -lXi -lXmu -lglut -lGL -lGLU -lm

即可compile成功
.
圖檔
圖檔
頭像
209088970
活潑的高中生
活潑的高中生
 
文章: 352
註冊時間: 週日 5月 11, 2003 9:04 am

文章wilson_shao » 週日 6月 19, 2005 6:13 pm

wsun013 寫:而 lib-dev 是提供您programming interfaces 用的
如果直接把 include/ 丟下去, 就會像您去住不屬於於您的房子, 會出問題的


謝謝你的回覆, 真的不知道自己進了別人的房子.

請問什麼是「奇摩知識」?

209088970 寫:gcc -Wall -I/usr/include/ -c -o OPENGL.o OPENGL.c

gcc -Wall -I/usr/include/ -o OPENGL -L/usr/X11R6/lib OPENGL.o -lX11 -lXi -lXmu -lglut -lGL -lGLU -lm

即可compile成功


正想說缺少glut.h, 謝謝.
本來出現
gcc: -l/usr/include/: linker input file unused because linking not done,
在刪掉 -I/usr/include/ 後就成功編譯了.

感謝你們的幫忙, 終於解決了不是自己能解決的問題.
wilson_shao
可愛的小學生
可愛的小學生
 
文章: 11
註冊時間: 週五 6月 17, 2005 1:51 pm

文章wsun013 » 週日 6月 19, 2005 8:22 pm

wilson_shao 寫:請問什麼是「奇摩知識」?


可能我表達不太好
http://tw.knowledge.yahoo.com/
就是我的答案都是有點瞎猜土法鍊鋼
答著答著以為自己在奇摩知識胡亂回答一樣 :ooops:
------BEGIN GEEK CODE BLOCK------
Version: 3.12
GE d->++ s: a-- C+++>++++ UL>++++ P>++++ L++>++++ E---- W+ N@ o K- w++(+)
O- M- V? PS+++(+) PE++(+) Y-- PGP- t>--- 5? X+++ R- tv-(--) b+ DI? D+ G e++>++++
h+(!) r++(%) y*>++++
-------END GEEK CODE BLOCK-------
頭像
wsun013
快樂的大學生
快樂的大學生
 
文章: 784
註冊時間: 週二 9月 14, 2004 12:12 pm
來自: 紐西蘭

文章訪客 » 週二 9月 13, 2005 9:00 am

[quote="209088970"][code]apt-get install libglut3-dev xlibs-dev[/code]
這樣apt-get會自動補齊所有套件

※注意:顯示卡的driver要編好,不然編opengl程式會編不成功,而且要開啟顯示卡的3d加速,否則將不能執行opengl程式

*.c內要include的檔

#include <GL/glut.h> // Header File For The GLUT Library
#include <GL/gl.h> // Header File For The OpenGL32 Library
#include <GL/glu.h> // Header File For The GLu32 Library
#include <unistd.h> // Header File For sleeping.


寫好*.c後,執行

gcc -Wall -I/usr/include/ -c -o OPENGL.o OPENGL.c

gcc -Wall -I/usr/include/ -o OPENGL -L/usr/X11R6/lib OPENGL.o -lX11 -lXi -lXmu -lglut -lGL -lGLU -lm

即可compile成功[/quote]
訪客
 


回到 debian misc

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客