포럼 회원으로 등록하신분만 다운로드가 가능합니다. 최대 업로드 가능한 용량은 1GB 입니다.

예전에 aesop site가 망가지기전에(2차 공제후)

이제현님이 SDL한글출력에 대한 글을 올린적이 있는데, 제가 캡쳐해 놓은게
있네요.

일단 보시기 바랍니다.

==========================================
SDL 한글 출력 (영문 텍스트 뷰어에 한글이 나오도록..)


안녕하세요? 오랜만입니다.

Scratchbox 루트파일시스템이 아니어도,
영문 텍스트 뷰어에서 한글을 뿌리는 방법을 찾았습니다.

문제가 있던 iconv() 함수를 동작시키려면, 라이브러리가 필요합니다.
우선 다음 사이트로 가보세요.

http://www.gnu.org/software/libiconv/

대충 내용을 한번 읽어 보시고, libiconv-1.9.1.tar.gz 를 받으세요.

그 다음 압축을 풀고, 다른 SDL 라이브러리 컴파일 하듯이 환경 변수 잡아주시고...
export CC=arm-linux-gcc;export AR=arm-linux-ar;export LD=arm-linux-ld;export RANLIB=arm-linux-ranlib

configure 를 구성해주시고..
./configure --build=i386 --host=arm --target=arm-linux --prefix=/usr/local/arm/oe/arm-linux --with-sdl-prefix=/korea-dokdo/aesoptool/gcc-3.3.4-glibc-2.3.3/arm-linux/arm-linux

make 하시고...

make install 하시고...


그리고 다음 파일들을 루트FS의 라이브러리 폴더로 복사합니다.
(소프트링크도 있으니 삼바로 하지 마시고, 리눅스위에서 하세요.)
libiconv.so                
libiconv.so.2              
libiconv.so.2.2.0

libiconv_plug.so
libiconv_plug_linux.so


그리고 마지막으로 다음 항목을 보드에서 설정해 주세요.
(/usr/local/lib/에 설치했다면.)
export LD_PRELOAD=/usr/local/lib/libiconv_plug.so
기존 커널서비스의 iconv를 위에서 컴파일한 라이브러리로 치환해 주는 기능입니다.

이렇게 하고나니, iconv_open( "UTF-8", "EUC-KR" )가 잘 동작합니다.
다음은 제가 사용중인 변환 함수입니다.
예전에 어느분이 올리신것은 free()가 없어서 몇번 호출하면 segmentation 에러가 날겁니다.
그래서, 변환 결과를 전역변수 배열로 저장합니다.
==========================================================================================
char utf8_buffer[512];
// This function is not working due to absence of iconv .SO files on the rootfs.
// But, we can make it work with libiconv. Do "export LD_PRELOAD=/lib/libiconv_plug.so"        first.
char* euckr_to_utf( const char* str ){

        iconv_t cd;
        char* outbuf,* out;

        size_t ileft, oleft;

        int err;
        int len;

        len = strlen( str );

        ileft = len;
        oleft = len * 4;

        out = outbuf = utf8_buffer;

        cd = iconv_open( "UTF-8", "EUC-KR" );
        if ((int)cd <= 0)
        {
                printf ("iconv_open failed!n");
        }

        err = iconv( cd, (char**)&str, &ileft, &outbuf, &oleft );
        iconv_close( cd );

        return out;

}
=========================================================================

참고로 EUC-KR은 KS5601코드이고, UTF-8은 유니코드의 UTF 표현입니다.
주의할것은 변환된 결과가 512바이트를 넘으면 안됩니다. 나중에 손좀 보겠습니다. malloc으로..
그리고,  UTF 체계를 좀 알아보시길 바랍니다.
한번 들여다 보았는데, 재미있네요.. 서양놈들 기준으로 만든것 같지만..

실제 한글 출력은 다음과 같이 해보세요.
=========================================================================================
surfaceTitle = TTF_RenderUTF8_Blended(font, euckr_to_utf("한글과 English"), White);
SDL_Rect rect={abs(480-surfaceTitle->w)/2,2,surfaceTitle->w,surfaceTitle->h};
SDL_BlitSurface(surfaceTitle, NULL,screen, &rect);
SDL_UpdateRect(screen, 0, 0, 0, 0); /* update screen */
===========================================================================================

제가 사용중인 개발환경과 차이가 있어, 여러분은 어떨지 잘 모르겠습니다.
결과 있으면,  알려주세요.

이 iconv는 후에 X 윈도우에서도 필요한것 같습니다.


김증일

2007.04.27 01:25:28
*.248.234.22

바쁘신 와중에 자료를 찾아 올려 주시어 지극히 감사드립니다~~.. 저녁에 해보고 결과를 올리겠습니다.

이제현

2007.04.27 19:30:54
*.193.44.113

iconv-plug 대신에 iconv를 쓰셔도 잘됩니다. 그런데 제가 이런 글을 올린적도 있군요. ㅎㅎ

김증일

2007.04.28 20:47:25
*.120.6.177

이상하게도 make install 까지 했는데도
libiconv.so
libiconv.so.2
libiconv.so.2.2.0
libiconv_plug.so
libiconv_plug_linux.so
파일 들이 생기질 안네요.

/usr/local/arm/oe/arm-linux/lib 아래에는

libSDL.a
libSDL.la
libSDLmain.a
libcharset.a
libcharset.la
libiconv.a
libiconv.la
libSDL.la

이렇게 밖에 없습니다.. 컴파일 옵션 똑같이 주었는데요...
find / -name 'libiconv.*' -print 로 찾아 봐도 없네요...
gettext 설치하고 다시 libiconv 설치 해보라고 해서 그렇게 했는데도 마찬가지입니다..
다른 분들은 잘 설치 되시는지요?

이제현

2007.04.29 23:09:31
*.147.27.84

configure --help를 해보시면, .so(shared object) 파일들 만드는 옵션이 있을겁니다.
지금은 static library만 만들어져서 그런것 같네요.

김증일

2007.04.30 08:13:58
*.120.6.177

--enable-shared 옵션인가요..이건 default=yes로 되어 있던데요
위 configure 옵션에 --enable-shared --enable-static --enable-relocatable 다 포함
해도 .so 파일은 만들어 지질 않네요.. 에러도 없고..
죄송합니다만, so파일을 좀 올려 주시면 안될까요.. 한글 을 보고 싶습니다~~
List of Articles
번호 제목 글쓴이 날짜 조회 수
142 [팁] aesop-2440 에서 ssh server 돌리기 [8] 유형목 2007-05-11 6841
141 autologin source. [1] 고현철 2007-05-04 5751
140 iconv install howto with aesop-2440 toolchain 고현철 2007-05-01 6043
139 터치 clibration application을 약간 수정 file [1] 김진성 2007-04-29 5706
138 커널 2.4에서 수정된 터치드라이버 file [1] 김진성 2007-04-29 5680
137 리눅스 혹은 다른 OS에서의 한글과 character set(or locale) [2] 고현철 2007-04-27 5803
» SDL 혹은 linux 상에서의 한글처리(iconv이용) - 원본:이제현님의 ... [5] 고현철 2007-04-27 6039
135 [aesop 가지고놀기]에서 언급했던 소스들 file [3] 이재훈 2007-04-25 5664
134 OSS(Open Sound System) 문서입니다. file [1] 이종창 2007-04-21 5804
133 aesop-2440 event driver read program(keybutton & touch) file 고현철 2007-04-21 5659
132 Linux OSS sound play/record program by ijch file 이종창 2007-04-13 5664
131 Linux OSS sound play program file 고현철 2007-04-11 5643
130 김유석님의 camdriver를 aesop-2440 kernel을 이용 컴파일 한 것 file [5] 고현철 2007-04-07 5697
129 cam driver 소스 file [5] 김유석 2007-04-04 5672
128 aesop-2440 교재 8장 memory 할당 입니다. file 최현진 2007-04-03 5756
127 aesop 3차 공제 자료를 올립니다. [2] 고현철 2007-03-26 5610
126 aesop_3rd를 일주일 사용하면서 정리한 것입니다. file [1] 윤선호 2007-03-26 5629
125 이솝3차 자료에 있는 high speed jtag 자료입니다. file [2] 성진호 2007-03-24 5632
124 QTE-3.3 에 TSLIB-1.3 연동시키기 file [1] 문철민 2007-03-21 5673
123 u-boot 예전에 분석했던 자료와 어디서 다운로드 받은 참고자료입니다... file [9] 고현철 2007-03-20 5766

사용자 로그인