336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
openGL을 보드로 포팅시
TinyX, MESA, GLUT 최소한 이렇게 세가지를 컴파일 해줘야 한다

TinyX같은경우 검색해보면 쉽게 포팅관련 문서를 구할 수 있고
MESA의 경우도 어렵지 않기에 생략하고 GLUT만 설명하겠다

http://www.opengl.org/resources/libraries/glut/glut_downloads.php
여기서 GLUT-3.7을 다운받아 적당한곳에 압축을 푼다

참고로 GLUT포팅하면서 얻어야 할것은 공유 라이브러리 libglut.so.3.7이다

$GLUT_HOME/linux 디렉토리의 README파일을 열어보면
$GLUT_HOME/lib/glut/ 디렉토리에 $GLUT_HOME/linux/Makefile을
복사해 넣으라고 한다

복사후 $GLUT_HOME/lib/glut/Makefile을 열어보자

....
#-----------------------------------------------------------------------
# start of Imakefile
# $XConsortium: Library.tmpl,v 1.34 95/06/16 17:44:51 gildea Exp $
# $XFree86: xc/config/cf/Library.tmpl,v 3.3 1995/07/08 10:21:44 dawes Exp $

         CC = arm-linux-gcc


  CCOPTIONS = -ansi -fPIC


STD_DEFINES = -Dlinux -D__i386__ -D_POSIX_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE -DX_LOCALE
CDEBUGFLAGS = -O2 -msoft-float #-m486

# Copyright (c) Mark J. Kilgard, 1994.
# Glut.cf - GLUT distribution Imakefile configuration info

EXTRA_INCLUDES = -I$(TOP)/include -I$(TOP)

GLUT_DEPLIBS = $(DEPGLUT) $(DEPXMULIB) $(DEPXLIB)
GLUT_LIBS = $(GLUT) $(GLU) $(OPENGL) $(XMULIB) $(XLIB) -lm
OPENGL = $(TOP)/../lib/libMesaGL.so
GLU = $(TOP)/../lib/libMesaGLU.so
INVENTOR = -lInventor
GLUT_DEPLIBS = $(DEPGLUT) $(DEPXMULIB) $(DEPXILIB) $(DEPXLIB)
GLUT_LIBS = $(GLUT) $(GLU) $(OPENGL) $(XMULIB) $(XILIB) $(XLIB) -lm
....

이부분이 GLUT라이브러리 컴파일 할때 사용되는 부분이다

빨간색으로 표시된 부분만 수정해주고 gl.h, glu.h경로만 잘 설정해 주고
$GLUT_HOME/lib/glut/ 경로에서 make를 하면 문제없이 컴파일이 될것이고

그 폴더에 libglut.so.3.7파일이 생성돼 있을 것이다

혹시라도 -msoft-float 옵션에 대해 알고싶으면 밑에글
gcc 컴파일 옵션.(에서 붉은색 부분)을 읽어 볼것을 권장한다.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

아래 사이트에서 Linux용 ARToolKit을 다운 받는다http://www.hitl.washington.edu/artoolkit/documentation/usersetup.htm
※참고로 호스트에서 컴파일할경우 위 링크의 설명대로 컴파일 하면 간단히 된다

다운받은후 압축을 푼다

파일중 Configure파일이 있는데 바로 실행하지 말고 에디터를 이용하여
파일을 열어보면 다음과 같다.


   ...

    echo "Select a video capture driver."
    echo "  1: Video4Linux"
    echo "  2: Video4Linux+JPEG Decompression (EyeToy)"
    echo "  3: Digital Video Camcoder through IEEE 1394 (DV Format)"
    echo "  4: Digital Video Camera through IEEE 1394 (VGA NONCOMPRESSED Image Format)"
    echo "  5: GStreamer Media Framework"
    echo -n "Enter : "
    read ANS
    if [ "$ANS" = "1" ]
    then
                echo
                echo "Color conversion should use x86 assembly (choose 'n' for 64bit systems)?"
                echo -n "Enter : "
                read ANS
                if [ "$ANS" = "y" ]
                then
                        CCVT_OBJ="ccvt_i386.o"
                elif [ "$ANS" = "n" ]
                then
                        CCVT_OBJ="ccvt_c.o"
                else
                        echo "Please enter y or n."
                        exit 0
                fi
        VIDEO_DRIVER="VideoLinuxV4L"
        #CFLAG="-O -I/usr/X11R6/include"
        CFLAG="-O -I/root/work/kernel/rebis2.6/include/"
        LDFLAG="-L/usr/X11R6/lib"
        ARFLAG="rs"
        RANLIB=""

        LIBS="-lglut -lGLU -lGL -lXi -lXmu -lX11 -lm"
        CONFIG="AR_INPUT_V4L"
   ...
1: Video4Linux"
2: Video4Linux+JPEG Decompression (EyeToy)"
3: Digital Video Camcoder through IEEE 1394 (DV Format)"
4: Digital Video Camera through IEEE 1394 (VGA NONCOMPRESSED Image Format)
이렇게 네개의 메뉴가 있고 선택에 따라 생성되는 Makefile 이 달라진다
때문에 자시가 사용할 모드(아마도 주로 1번을 사용하게 될 것이다)의 부분을 찾아
위의 예(빨간부분) 처럼 수정을 해야 한다

물론 CFLAG외에도 LIBS관련된 옵션들도 수정을 해야하는데 후에 이야기를 하겠다

자!! 일단 ./Configure를 실행해보자!!
그럼 각각 폴더에 Makefile이 생길 것이다
일단 해야 할일은 Makefile을 추적하여 컴파일 해야할부분을
arm-linux-gcc로 바꿔줘야 한다.

   ./lib 경로 의 Makefile들은 CC=arm-linux-gcc로 바꿔주기만하면 쉽게 컴파일 될것이고
   ./util 과 examples 경로는 cc를 $(cc) 로바꾸고 cc=arm-linux-gcc를 추가해주면 끝!

이제 make를 실행해보자!!
제일 상위의 Makefile 경로대로 일단 ./lib 경로의 폴더들 부터 하나하나 make 를 해보자
정확한 기억은 아니지만 ./lib폴더는 문제없이 쉽게 크로스 컴파일이 될것이다.

삽질의 시작은 여기부터 이다!! 이제 ./util디렉토리와 ./examples폼더를 컴파일 해야한다!!

....그런데

좀 길어 질것 같은 관계로 일단 여기서 1부끝!!!

+ Recent posts