Mingw(GCC) 포팅 성공 ... ?
Moderator: 류광
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact:
Mingw(GCC) 포팅 성공 ... ?
Dev-C++의 VC++ 프로젝트 가져오기 기능 덕분에 수월하게 이식에 성공했습니다.... 소스 중 두 군데가 말썽이 있었는데 어쨌든 정적 라이브러리를 빌드했고 라이브러리를 링크하는 테스트 프로그램도 실행시켜 봤습니다.
오류 났던 두 부분은 제가 임의로 고쳤는데 다른 부분과의 관련성을 잘 모르는 상태에서 그냥 오류만 안나게 하는 식으로 고쳐서 조금 걱정이네요.
그 외에 경고가 두 개 뜨는데, 하나는 아무 의미 없는 코드라는 경고이고 (배정문도 아니고 함수 호출도 아닌 문장이 하나 있습니다) 또 하나는 NULL에 대한 것인데.. 그냥 무시했습니다.
그냥 현재 소스 코드의 이식성을 실험한다는 차원에서 해 보았구요.... crowy님이 소스포지의 CVS에 가장 최근의 코드를 올리시면 다시 시도해 볼려고 합니다....
오류 났던 두 부분은 제가 임의로 고쳤는데 다른 부분과의 관련성을 잘 모르는 상태에서 그냥 오류만 안나게 하는 식으로 고쳐서 조금 걱정이네요.
그 외에 경고가 두 개 뜨는데, 하나는 아무 의미 없는 코드라는 경고이고 (배정문도 아니고 함수 호출도 아닌 문장이 하나 있습니다) 또 하나는 NULL에 대한 것인데.. 그냥 무시했습니다.
그냥 현재 소스 코드의 이식성을 실험한다는 차원에서 해 보았구요.... crowy님이 소스포지의 CVS에 가장 최근의 코드를 올리시면 다시 시도해 볼려고 합니다....
아아.. 그렇군요..
일단.. 손을 보고 있지만..
요즘의 관심은 전체적인(GLAN과 큰관련은 없는)
gui화에 목적이 된것 같네요..;
그외에 주로 쉽게보이는 버그들을 손보고 있고요..
뭔가 근본적인 부분은 저도 손대기가 힘들군요..;;
요즘은 좀처럼 실력이 늘지도 않아서... (가장큰 이유군요; )
일단, 인터넷이 가능하게 되는날 CVS에 약간의 버그만이 고쳐진
버전을 올리도록 하겠습니다.. (쿨럭)
요즘의 관심은 전체적인(GLAN과 큰관련은 없는)
gui화에 목적이 된것 같네요..;
그외에 주로 쉽게보이는 버그들을 손보고 있고요..
뭔가 근본적인 부분은 저도 손대기가 힘들군요..;;
요즘은 좀처럼 실력이 늘지도 않아서... (가장큰 이유군요; )
일단, 인터넷이 가능하게 되는날 CVS에 약간의 버그만이 고쳐진
버전을 올리도록 하겠습니다.. (쿨럭)
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact:
기다릴께요!
참 glancore 방식을 정식으로 채택하신다면 조금은 더 융통성있게 할 필요가 있을 것 같습니다(처음 만들 때 제가 단순화를 너무 강조했었던 것 같아요..-.-). 현재의 glancore 에서 문제점은
1. glanText 생성시 글꼴 파일을 임의로 지정할 수 없다.
2. 단일체가 강제된다.
1번은 쉽게 해결할 수 있는 문제이구요 (getInstance()가 글꼴 파일 이름을 받게 하는 등). 그러나 2번과 결합된다면 인터페이스가 좀 변할 수도.. 생성자를 public으로 노출시키는 등....
2 번은 한 프로그램에서 둘 이상의 글꼴들들 사용할 수 있게 하자.. 라는 측면에서의 문제인데, 단일체를 그냥 포기하거나, 아니면 단일체가 되어야 할 부분과 글꼴마다 달라질 부분을 분리하거나 등으로 고민이 필요할 것 같습니다.
코어 부분이 정리가 됨에 따라 저는 외부 클래스 래퍼를 통해서 스트림을 지원하게 하는 쪽으로 한 번 작업을 해보고 싶습니다. printf 스타일 대신 cout 스타일을 사용할 수 있게요...
참 glancore 방식을 정식으로 채택하신다면 조금은 더 융통성있게 할 필요가 있을 것 같습니다(처음 만들 때 제가 단순화를 너무 강조했었던 것 같아요..-.-). 현재의 glancore 에서 문제점은
1. glanText 생성시 글꼴 파일을 임의로 지정할 수 없다.
2. 단일체가 강제된다.
1번은 쉽게 해결할 수 있는 문제이구요 (getInstance()가 글꼴 파일 이름을 받게 하는 등). 그러나 2번과 결합된다면 인터페이스가 좀 변할 수도.. 생성자를 public으로 노출시키는 등....
2 번은 한 프로그램에서 둘 이상의 글꼴들들 사용할 수 있게 하자.. 라는 측면에서의 문제인데, 단일체를 그냥 포기하거나, 아니면 단일체가 되어야 할 부분과 글꼴마다 달라질 부분을 분리하거나 등으로 고민이 필요할 것 같습니다.
코어 부분이 정리가 됨에 따라 저는 외부 클래스 래퍼를 통해서 스트림을 지원하게 하는 쪽으로 한 번 작업을 해보고 싶습니다. printf 스타일 대신 cout 스타일을 사용할 수 있게요...
1번의 생성시의 글꼴지정문제는.. 지난번에는 잘 해결이 안되었습니다.. 뭐랄까, 나중에 트루타입의 글꼴을 지원하게 된다고 하더라도, 어떤것을 기준으로 삼느냐라던가 하는 문제랄까요.. 게다가 처음으로 생성되어야 할 글꼴을 무엇으로 하느냐도 문제가 되고요..
그래서 생각하고 있는것이 아예 처음부터 글꼴을 읽어들이지 않도록 하는것입니다만.. 사용하기에 좀 불편함도 있군요.. 물론 여러 텍스트 객체를 관리하는 관리자를 만들면 해결되겠지만요... 아마 GUI를 만들게 되면서 그 부분을 만들게 될것 같습니다.. 그럼 그때 그것과 같이 하게 된다면 해결되지 않을까 생각되네요...
(그리고 기본글꼴의 경우는 소스 내부에 첨가해버리는 방법도 생각하고 있습니다..;; )
2번 문제의 경우, 외부 인터페이스부분과 실제 출력부분을 나누는것을 고려해볼만할것 같네요. 실제로 외부에 사용되는것은 글꼴정보등만을 저장하고.. 실제 출력은 단일체 클래스에서 하는형태로요...
단일체로 하려는 이유라면.. 기본으로 제공되는 내부 글꼴의 중복 자료량을 최소로 하기 위해서랄까요..
아마도 12월쯤에 새버전의 공개가 있을듯합니다..
(11월 말에 인터넷 공사를 한다고 하는군요..;;)
그래서 생각하고 있는것이 아예 처음부터 글꼴을 읽어들이지 않도록 하는것입니다만.. 사용하기에 좀 불편함도 있군요.. 물론 여러 텍스트 객체를 관리하는 관리자를 만들면 해결되겠지만요... 아마 GUI를 만들게 되면서 그 부분을 만들게 될것 같습니다.. 그럼 그때 그것과 같이 하게 된다면 해결되지 않을까 생각되네요...
(그리고 기본글꼴의 경우는 소스 내부에 첨가해버리는 방법도 생각하고 있습니다..;; )
2번 문제의 경우, 외부 인터페이스부분과 실제 출력부분을 나누는것을 고려해볼만할것 같네요. 실제로 외부에 사용되는것은 글꼴정보등만을 저장하고.. 실제 출력은 단일체 클래스에서 하는형태로요...
단일체로 하려는 이유라면.. 기본으로 제공되는 내부 글꼴의 중복 자료량을 최소로 하기 위해서랄까요..
아마도 12월쯤에 새버전의 공개가 있을듯합니다..
(11월 말에 인터넷 공사를 한다고 하는군요..;;)
-
- Posts: 15
- Joined: 2004-02-17 11:40
- Contact:
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact:
-
- Posts: 15
- Joined: 2004-02-17 11:40
- Contact:
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact:
지금 현재 빌드는 되는데 테스트 프로그램에서 링크를 하면 런타임 오류가 나오는 상황입니다.... 아 참 여기 자료실의 glan core 1.0.16 hack 버전이구요.
컴파일 오류는 대략 이런 식으로 해결했습니다. 우선 프렌드 관련 오류는 그냥 friend를 지워서 해결했구요-.- 템플릿의 형 정의나 기타 여러 부분에서 자꾸 나오는 implicit typename 어쩌구는 해당 부분 앞에 typename 키워드를 추가했습니다.
GL_BGR_EXT 관련 오류는 gl.h를 최신 버전으로 갱신하는 게 정도이지만 그냥 gi_texture.h에서 #define으로 GL_BGR_EXT를 0x80E0를 정의했습니다.
대충 이정도였습니다. 실행 시 오류가 나는 원인은 아직 잘 모르겠습니다....
컴파일 오류는 대략 이런 식으로 해결했습니다. 우선 프렌드 관련 오류는 그냥 friend를 지워서 해결했구요-.- 템플릿의 형 정의나 기타 여러 부분에서 자꾸 나오는 implicit typename 어쩌구는 해당 부분 앞에 typename 키워드를 추가했습니다.
GL_BGR_EXT 관련 오류는 gl.h를 최신 버전으로 갱신하는 게 정도이지만 그냥 gi_texture.h에서 #define으로 GL_BGR_EXT를 0x80E0를 정의했습니다.
대충 이정도였습니다. 실행 시 오류가 나는 원인은 아직 잘 모르겠습니다....
-
- Posts: 15
- Joined: 2004-02-17 11:40
- Contact:
와우.. 감사합니다.. 류광님 글을 토대로 과감한(?) 수정을 가한 후
어찌 어찌하여 저도 빌드는 됐는데 예제를 돌려보려하니 링커에러가 자꾸 나는 것입니다.
그것도 어이없는 opengl 함수들에 대해서요. 프로젝트 옵션에도 -lopengl32 되어 있고..
딱히 고칠 부분도 없는거죠..
빌드한 라이브러리 이름은 libGLAN.a 로 했구요...
....
-lopengl32 지우고 빌드 한번 해보고( 오픈지엘 함수들 몽땅 링커에러..)
다시 -lopengl32 를 뒤에 추가하고 빌드하니... 됩니다. ㅡㅡ;;;
컴파일 옵션, 링커 옵션 싸그리 지우고 링커 옵션에 -lglan -lopengl32 라고
되어 있는 상태구요, 프로젝트는 당연히 win32 gui 선택해놨고..
링커에러 문제는 아마도 Dev-Cpp의 문제가 아니었나 생각이 됩니다..
암튼 감사합니닷!!
어찌 어찌하여 저도 빌드는 됐는데 예제를 돌려보려하니 링커에러가 자꾸 나는 것입니다.
그것도 어이없는 opengl 함수들에 대해서요. 프로젝트 옵션에도 -lopengl32 되어 있고..
딱히 고칠 부분도 없는거죠..
빌드한 라이브러리 이름은 libGLAN.a 로 했구요...
....
-lopengl32 지우고 빌드 한번 해보고( 오픈지엘 함수들 몽땅 링커에러..)
다시 -lopengl32 를 뒤에 추가하고 빌드하니... 됩니다. ㅡㅡ;;;
컴파일 옵션, 링커 옵션 싸그리 지우고 링커 옵션에 -lglan -lopengl32 라고
되어 있는 상태구요, 프로젝트는 당연히 win32 gui 선택해놨고..
링커에러 문제는 아마도 Dev-Cpp의 문제가 아니었나 생각이 됩니다..
암튼 감사합니닷!!
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact:
-
- Posts: 15
- Joined: 2004-02-17 11:40
- Contact:
파일사이즈가 의외로 커서 그런지 자료실에 안올라가네요.. ^^;;
아래 링크에서 받아보심 될꺼고
http://batmask.co.kr/glan/GLAN-1.0.16mod.zip
저도 한번 패키징을 해봤는데 첨 해본거라 제대로 된건지도 모르겠습니다. ㅡㅡ;;
파일크기가 왜이리 작아지죠? bzip2가 좋은건지.. ;;;
받아보시고 된다면 제대로된 패키징 부탁드립니다.. ^^;;
http://batmask.co.kr/glan/glanpack.zip
제가 해본 패키지는 자료실에 올렸었는데 제대로 패키징 하시면 지우겠습니다. ^^
아래 링크에서 받아보심 될꺼고
http://batmask.co.kr/glan/GLAN-1.0.16mod.zip
저도 한번 패키징을 해봤는데 첨 해본거라 제대로 된건지도 모르겠습니다. ㅡㅡ;;
파일크기가 왜이리 작아지죠? bzip2가 좋은건지.. ;;;
받아보시고 된다면 제대로된 패키징 부탁드립니다.. ^^;;
http://batmask.co.kr/glan/glanpack.zip
제가 해본 패키지는 자료실에 올렸었는데 제대로 패키징 하시면 지우겠습니다. ^^
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact:
-
- Posts: 15
- Joined: 2004-02-17 11:40
- Contact:
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact:
glancore는 사용자에게 헤더 하나만 노출시키고 나머지는 모두 숨기도록 한 버전입니다. viewtopic.php?p=1201#1201 에 논의가 있구요. 파일은 http://gpgstudy.cafe24.com/cafe24board/ ... 401&idx=72 에 있습니다. include에 있던 헤더들이 모두 src로 가고 include에는 glancore.h만 있습니다. 패키지 작성 시 include에는 glancore.h 만 포함시키면 됩니다....
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact:
참 오류 메시지들입니다...
이런 multiple definition 들이 좀 더 나온 후에 상당히 이상한 메시지들도 나옵니다...
제 Dev-C++이 이상한 걸지도 모르겠습니다...
Code: Select all
컴파일러: Default compiler
Building Makefile: "E:\Dev\Libs\glan-1.0.6mod\sample\Textdraw\Makefile.win"
Finding dependencies for file: E:\Dev\Libs\glan-1.0.6mod\sample\Textdraw\main.cpp
실행중 make...
make.exe -f "E:\Dev\Libs\glan-1.0.6mod\sample\Textdraw\Makefile.win" all
g++.exe -c main.cpp -o main.o -I"E:/Dev/Dev-Cpp/include/c++"
-I"E:/Dev/Dev-Cpp/include/c++/mingw32" -I"E:/Dev/Dev-Cpp/include/c++/backward"
-I"E:/Dev/Dev-Cpp/include" -I"E:/Dev/Libs/glan-1.0.6mod/include"
g++.exe main.o -o "Textdraw.exe" -L"E:/Dev/Dev-Cpp/lib" -L"E:/Dev/Libs/glan-1.0.6mod"
-mwindows -lGLAN -lopengl32
E:/Dev/Libs/glan-1.0.6mod/libGLAN.a(gi_text.o)(.rdata$_ZTV8glanText+0x0):gi_text.cpp:
multiple definition of `vtable for glanText'
main.o(.data$_ZTV8glanText+0x0):main.cpp: first defined here
E:/Dev/Libs/glan-1.0.6mod/libGLAN.a(gi_text.o)(.rdata$_ZTI8glanText+0x0):gi_text.cpp:
multiple definition of `typeinfo for glanText
...
Code: Select all
E:/Dev/Libs/glan-1.0.6mod/libGLAN.a(gi_text.o)(.text+0x1c):gi_text.cpp: undefined
reference to `__gxx_personality_sj0'
E:/Dev/Libs/glan-1.0.6mod/libGLAN.a(gi_text.o)(.text+0x41):gi_text.cpp: undefined
reference to `_Unwind_SjLj_Register'
E:/Dev/Libs/glan-1.0.6mod/libGLAN.a(gi_text.o)(.text+0xd7):gi_text.cpp: undefined
reference to `_Unwind_SjLj_Resume'
E:/Dev/Libs/glan-1.0.6mod/libGLAN.a(gi_text.o)(.text+0x154):gi_text.cpp: undefined
reference to `_Unwind_SjLj_Resume'
...
-
- Posts: 15
- Joined: 2004-02-17 11:40
- Contact:
아 핵버전이 glancore형태였군요.. ^^
흠... 링커에러들을 보아도 사실 잘 모르겠습니다. ㅡㅡ;;
안되신다는 얘기 듣고 다른 곳에 DevCpp설치된 곳에 가서 해보기도 했는데
그곳에서도 무난히 되서.... 뭐라고 말씀드리기가 힘드네요.. ^^;;;
.....
그냥 참고 정보로 제 집의 컴터는 win2000 에 gcc 3.3.1 을 사용하고
DevCpp(4.9.8.7) 업데이트는 각종 랭귀지 팩을 제외하곤 다 업데이트 된 상태구요,
컴파일, 링커 옵션등은 모두 no 상태에서 빌드했습니다.
참고로 컴파일 로그는 다음과 같습니다.
다른 곳에서 했던 컴퓨터는 XP에 DevCpp(아마도 4.9.8.7)도 중요 업데이트는
다 되어 있는 상태고 gcc도 원래 포함된거 사용하는 것이었는데 무난히 되었습니다.
.....
뭐가 문제일까요.... ^^;;;
흠... 링커에러들을 보아도 사실 잘 모르겠습니다. ㅡㅡ;;
안되신다는 얘기 듣고 다른 곳에 DevCpp설치된 곳에 가서 해보기도 했는데
그곳에서도 무난히 되서.... 뭐라고 말씀드리기가 힘드네요.. ^^;;;
.....
그냥 참고 정보로 제 집의 컴터는 win2000 에 gcc 3.3.1 을 사용하고
DevCpp(4.9.8.7) 업데이트는 각종 랭귀지 팩을 제외하곤 다 업데이트 된 상태구요,
컴파일, 링커 옵션등은 모두 no 상태에서 빌드했습니다.
참고로 컴파일 로그는 다음과 같습니다.
Code: Select all
컴파일러: Default compiler
Building Makefile: "C:\4학년2학기수업\computer graphics\GLAN-1.0.16mod\sample\Textdraw\Makefile.win"
실행중 make clean
rm -f main.o Textdraw.exe
g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/include/c++" -I"C:/Dev-Cpp/include/c++/mingw32"
-I"C:/Dev-Cpp/include/c++/backward" -I"C:/Dev-Cpp/include" -I"C:/Dev-Cpp/include/GL"
g++.exe main.o -o "Textdraw.exe" -L"C:/Dev-Cpp/lib" -L"C:/Dev-Cpp/lib" -L"C:/4학년2학기수업/computer graphics/GLAN-1.0.16mod" -mwindows -lGLAN -lopengl32
실행 종료
편집성공
다 되어 있는 상태고 gcc도 원래 포함된거 사용하는 것이었는데 무난히 되었습니다.
.....
뭐가 문제일까요.... ^^;;;
-
- Posts: 15
- Joined: 2004-02-17 11:40
- Contact:
헛.. 다른거 컴파일하다가 위에서 말씀하신 에러와 비슷한게 떴습니다. ㅡㅡ;;
이유는 모르겠는데... 되던건데... 위에서 쓰셨던
와 거의 유사한 에러였습니다. undefined reference 어쩌구 저쩌구..
전체 재컴파일을 하니 되는군요. ^^;;
혹시 안해보셨으면 한번 시도해 보시길...
이유는 모르겠는데... 되던건데... 위에서 쓰셨던
Code: Select all
E:/Dev/Libs/glan-1.0.6mod/libGLAN.a(gi_text.o)(.text+0x1c):gi_text.cpp: undefined
reference to `__gxx_personality_sj0'
전체 재컴파일을 하니 되는군요. ^^;;
혹시 안해보셨으면 한번 시도해 보시길...
-
- Posts: 15
- Joined: 2004-02-17 11:40
- Contact:
구글 검색결과...
http://osprey.unisa.ac.za/phorum/read.p ... =958&t=958
http://www.allegro.cc/forums/view_thread.php?_id=331111
http://www.cs.vassar.edu/~priestdo/emac ... 00277.html
http://linux.derkeiler.com/Newsgroups/c ... /0514.html
내용을 정리하면 프로젝트 옵션에 라이브러리 패스를 추가해라,
gcc 대신 g++을 써라.. 아니면 -lstdc++ 옵션을 추가해라... 정도군요.
....
근데 이 포럼 게시판(?)은 리플 수정을 어찌하는건지.. 생각나는데로 손가는 데로 적다보니
계속 새글을 붙여서 쓸데없는 말도 그대로 남겨두네요..
http://osprey.unisa.ac.za/phorum/read.p ... =958&t=958
http://www.allegro.cc/forums/view_thread.php?_id=331111
http://www.cs.vassar.edu/~priestdo/emac ... 00277.html
http://linux.derkeiler.com/Newsgroups/c ... /0514.html
내용을 정리하면 프로젝트 옵션에 라이브러리 패스를 추가해라,
gcc 대신 g++을 써라.. 아니면 -lstdc++ 옵션을 추가해라... 정도군요.
....
근데 이 포럼 게시판(?)은 리플 수정을 어찌하는건지.. 생각나는데로 손가는 데로 적다보니
계속 새글을 붙여서 쓸데없는 말도 그대로 남겨두네요..
batmask wrote:헛.. 다른거 컴파일하다가 위에서 말씀하신 에러와 비슷한게 떴습니다. ㅡㅡ;;
이유는 모르겠는데... 되던건데... 위에서 쓰셨던
와 거의 유사한 에러였습니다. undefined reference 어쩌구 저쩌구..Code: Select all
E:/Dev/Libs/glan-1.0.6mod/libGLAN.a(gi_text.o)(.text+0x1c):gi_text.cpp: undefined reference to `__gxx_personality_sj0'
전체 재컴파일을 하니 되는군요. ^^;;
혹시 안해보셨으면 한번 시도해 보시길...