설치해야할 패키지

apt-get install language-pack-ko


Posted by 하루하루

회사에서 하는 일을 기준으로 잊어먹지 않기위해 정리해 둡니다. ^^

기본적인 과정은 다음과 같다.


동일한 소스코드를 가지고, target 을 세개를 만든다.


1. i386 빌드를 위한 타켓 -> BSD Dynamic Library

2. PPC 빌드를 위한 타켓 -> BSD Dynamic Library

3. 두개 타겟을 가지고 lipo 이용한 스크립트를 실행시켜 universal binary 만들 타겟 -> Special Targets Aggregate


일단, MakeFile 있는 빌드 옵션들을 x-code 환경에 적어줘야 한다.


여기서 설명하는 x-code 버전은 3.0 기준으로 한다.


1. i386 타겟을 더블클릭한다.

2. Build -> Architectures -> Valid Architectures 항목을 i386으로 정해준다.

3. Build -> Build Locations -> Base SDK Path 값을 $(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk 으로 변경

4. Build -> Linking -> Other Linker Flags 값을


-Wl,-executable_path,/Users/jslee/Documents/DEV/FF-Extension/mozilla-u/build/ppc/dist/universal/xulrunner/XUL.framework/Versions/Current -lxpcomglue_s -lxpcom -lnspr4 -lplds4 -lplc4 -liconv


5. Build -> Search Paths -> Header Search Paths 값을 미리 컴파일한 "gecko sdk path"/include 경로를 적어준다. 이때 주의사항은 i386 이면 i386 gecko sdk path 적어주고, PPC 타겟이면 ppc gecko sdk path 적어준다.


6. Build -> Search Paths -> Library Search Paths 값을 미리 컴파일한 "gecko sdk path"/lib 경로와, 미리 universal binary 컴파일한 XUL.Framework 링크 시켜준다.

7. Build -> GCC 4.0 - Language -> Other C++ Flags 값에 -fshort-wchar 적어준다.

8. Build -> GCC 4.0 - Preprocessing -> Preprocessor Macros 값에 XP_UNIX=1 XP_MACOSX=1 값을 차례로 넣어준다.


이렇게 한후 하나씩 빌드해서 무리없이 빌드 되는것을 확인한다.


9. universal binary 만들 타겟 선택하여 new -> New Build Phase -> New Run Script Build Phase 실행

10. 9 에서 나오는 창에 script 란에 다음을 입력


lipo -create $TARGET_BUILD_DIR/libfpweblink-i386.dylib $TARGET_BUILD_DIR/libfpweblink-ppc.dylib -output $TARGET_BUILD_DIR/fpweblink.dylib


11. universal binary 로 만들 타겟 을 더블클릭하여 정보 창을 띄운다. 정보창에서 Direct Dependencies 에


- PPC Target

- i386 Target

두가지를 등록한다.


12. universal binary 타겟을 clean target 후 build 하면 의존성 걸려 있는 타겟들 부터 새로 빌드한후, universal binary 까지 만드는 것을 볼 수 있다.




Posted by 하루하루

Unicode 와 BOM

Tip & Tech : 2008. 2. 28. 11:40

BOM 은 Byte Order Mark 의 약자로서 인코딩된 문서의 첫머리에 삽입되어 문서를 읽을때 문서의 인코딩 방식을 알수 있게 하는 일종의 코드 같은 역할을 하게 됩니다. 이들 BOM 의 종류는 인코딩 방식에 따라서 다음표와 같네요.

인코딩 방식 Byte Order Mark(BOM)
UTF-8 EF BB BF
UTF-16 Big Endian FE FF
UTF-16 Little Endian FF FE
UTF-32 Big Endian 00 00 FE FF
UTF-32 Little Endian FF FE 00 00

어떤 유니코드 문서를 헥사 에디터로 열어보면 위 표에 나와있는 BOM 을 확인 할 수 있습니다.
하지만, 흔히들 겪는 문제인, UTF-8 환경에서의 BOM 은 조금 특별한데, UTF-8 에서는 Byte Order 가 없기 때문에, 단지 UTF-8 이라는 문서를 나타내는 표식으로 사용될 뿐이라 있어도 그만 없어도 그만 이라는거지요. 그래서 그런지 유닉스나, 리눅스 환경에서는 UTF-8 에서 BOM 을 사용하지 않는다고 합니다. 그래서 흔히들 문제가 발생하지요.

특히나, 요즘에는 웹개발시 UTF-8 이 대세로 자리잡아 감에 따라서 종종 이런 문제가 발생하는데요. IE 에서 UTF-8 BOM 을 해석 못한다거나, MSXML Parser 에서 (버전마다 다르답니다.) UTF-8 BOM 을 해석하지 못하는 문제 때문에 프로그램이 제대로 동작을 안한다거나 하는 문제가 발생합니다.

이런 문제는 단순히 BOM 을 제거하면 됩니다만, BOM 을 확인해서 모두 없애주는 툴이 존재하는지는 저도 아직 잘 모르겠고요.. UTF-8 문서를 저장할때, BOM 을 저장하거나 저장안하는 옵션을 제공하는 에디터를 사용하면 되겠습니다.

Posted by 하루하루