WebKit 빌드 성공담

WebKit 2008.10.31 17:09
WebKit (이후 웹킷) 소스를 다운 받아 빌드를 시도하고 있다. 소스를 개발하는 것도 아니고, 다른 사람들이 잘 만들어 놓은 소스를 받아다 빌드만 하는건데... 왜 이리 힘든지... 빌드 하며 겪은 시행 착오를 메모 해둔다.

우선 사전에 확인할 사항이 몇개 있다.

1. unix 파일 포맷
빌드 과정에 cygwin 상에서 *.sh 파일들이 몇개 실행된다. 근데, 이놈들이 dos 텍스트 모드다. 파일 찾기로 *.sh을 모두 찾아서 dos2unix 해줘야 한다. 그러지 않으면 "\r 파일을 처리할 수 없다... 어쩌구..." 하는 에러가 출력된다.
*.sh 파일만 바꾸면 될 줄 알았는데, 빌드에 관련된 소스 파일들을 모두 변환해줘야 한다. 빌드 할 때, perl 을 이용해서 소스를 자동 생성하는데, 텍스트 파일 모드를 변환하지 않으면 에러가 발생한다.

2. cygwin 툴 설치
WebKit 빌드를 위해 필요한 cygwin의 모든 패키지가 설치되어 있는지 확인해야 한다. 당연히 모두 설치되어 있을 거라고 자신했는데, 실상은 그렇지 않았다. 조금만 겸손하게 확인해도 많은 시간을 절약할 수 있다. 겸손한 마음으로 http://webkit.org/building/tools.html 를 한번 더 확인해보자.

웹킷을 갖고 작업하는 변방의 개발자들 끼리 많은 정보를 공개했으면 좋겠다. 댓글이나 트랙백 아주 많이 환영한다.



(win xp 32bit 환경에서)
WebKit
빌드& 실행 과정 정리

 

 

개발툴 설치, 특히 필요한 cygwin의 모든 패키지가 설치됐는지 확인

참조 URL

l  http://webkit.org/building/tools.html

l  http://trac.webkit.org/wiki/BuildingOnWindows

 

할일

-       VS2005 설치

-       VS2005 patch 설치

-       Cygwin 설치

-       QuickTime SDK 설치

 

 

 

WebKit 소스 확보

참조 URL

l  http://webkit.org/building/checkout.html

l  http://svn.webkit.org/repository/webkit/trunk(subversion 소스 URL)

 

할일

-       subversion client(TortoiseSVN)으로 http://svn.webkit.org/repository/webkit/trunk 소스 가져오기

 

 

 

WebKitSupportLibrary.zip 을 작업 디렉토리 루트에 복사

참조 URL

l  http://webkit.org/building/checkout.html

 

할일

-       http://developer.apple.com/opensource/internet/webkit_sptlib_agree.html 에서 WebKitSupportLibrary.zip 파일을 다운로드 하여 WebKit 프로젝트 홈디렉토리에 복사

 

 

 

소스 업데이트

참조 URL

l  http://webkit.org/building/checkout.html

 

할일

-       WebKitTools/Scripts/update-webkit 스크립트 실행

 

사용자 삽입 이미지

 

 

모든 소스 파일을 unix text file로 변환 (dos2unix)

참조 URL

l  http://trac.webkit.org/wiki/BuildingOnWindows

l  *.sh 파일만 변환하면 될 줄 알았는데, 그게 아님. 모든 소스를 변환해야 함. 빌드과정에서 perl을 통해 소스파일을 생성할 때 문제가 생김.

l  빌드에 참여하는 소스 코드만 변환해야 시간을 절약할 수 있다. 소스 디렉토리에는 테스트 관련 파일들이 무척 많다. 전부 변환하려면 세월이다.

 

할일

-       *.sh 변환

find . -name "*.sh" -exec dos2unix {} \;

-       JavaScriptCore/* 변환

find JavaScriptCore -type f -exec dos2unix {} \;

-       JavaScriptGlue/* 변환

find JavaScriptGlue -type f -exec dos2unix {} \;

-       WebCore/* 변환

find WebCore -type f -exec dos2unix {} \;

-       WebKit/* 변환

find WebKit -type f -exec dos2unix {} \;

-       WebKitLibraries/* 변환

find WebKitLibraries -type f -exec dos2unix {} \;

 

사용자 삽입 이미지

 

 

환경변수 WEBKITOUTPUTDIR, WEBKITLIBRARIESDIR 설정

참조 URL

l  http://trac.webkit.org/wiki/BuildingOnWindows

 

사용자 삽입 이미지

 

 

VS2005로 WebKit sln 파일을 로드하여 컴파일 옵션 수정

일러두기

l  VS2005 프로젝트 파일이 build-webkit 스크립트에도 동일하게 사용된다. 그래서 ~/WebKit/win/WebKit.vcproj/WebKit.sln 의 빌드 옵션을 설정하면, 스크립트(WebKitTools/Scripts/build-webkit)로 빌드 할 때도 여기서 설정한 빌드 옵션이 적용된다.

 

할일

-       VS2005~/WebKit/win/WebKit.vcproj/WebKit.sln 로드

-       아래 프로젝트의 컴파일러 옵션에 /wd4819 추가 ( 이렇게 하지 않으면 빌드 과정에서 문자열 코드 페이지관련 워닝을 낸다. 영어권 개발자들은 경험하지 못할 문제다. 해당 워닝을 무시하지 않으면 이를 에러로 취급한다. )

QTMovieWin, WebCore, WebKit, TestNetscapePlugin

 

사용자 삽입 이미지

 

 

빌드

할일

-       WebKitTools/Scripts/build-webkit --debug 실행

 

사용자 삽입 이미지

 

 

빌드 성공!

 

사용자 삽입 이미지

 

 

웹킷 실행, 디버그

참조 URL

l  http://webkit.org/building/debug.html

 

할일

-       WebKitTools/Scripts/debug-safari 실행 (PC에 Safari 브라우저가 설치되어 있어야 한다.)

-       debug-safari를 실행하면 VS2005 디버깅 환경이 뜬다.

-       소스를 열고, 원하는 지점에 브레이크 포인트를 설정한다.

-       F5를 눌러 디버깅을 시작한다.

 

사용자 삽입 이미지

 

 

debug-safari 스크립트로 웹킷을 실행시키려면, PC에 사파리 브라우저가 설치되어 있어야 한다. 다시 한번 말하지만, 웹킷은 브라우저가 아니라 브라우저 엔진이다.

(
)

 

저작자 표시 비영리 변경 금지
신고
Posted by ingee
TAG ,

댓글을 달아 주세요

  1. 질문드립니다 2009.01.13 16:38 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요? 저는 위의 방법대로 win xp, vs 2005 pro에서똑같이 했는데 컴파일시 pthread.h 와 unicode/uchar.h를 못찾아서 에러가 납니다..cygwin 문제일까요?

    • ingee 2009.11.12 16:26 신고  댓글주소  수정/삭제

      1년이 지나 다시 한번 WebKit 최신소스를 빌드하면서 같은 현상을 확인했습니다. 제경우엔 WEBKITLIBRARIESDIR 환경변수가 문제였습니다.

      WEBKITOUTPUTDIR 은 개발자 맘대로 path를 정해도 되지만, WEBKITLIBRARIESDIR 은 WebKit 소스 트리중에 존재하는 $(SrcHome)\WebKitLibraries\win 을 지정해야 합니다.

      WEBKITOUTPUTDIR과 WEBKITLIBRARIESDIR 모두 path를 Windows 스타일 ('/'로 구분하는 게 아니고, '\'로 구분하는 스타일)로 지정해야 하고, full path를 적어줘야 합니다.

      같은 문제를 겪는 분들께 도움이 되면 좋겠습니다.

  2. 질문드립니다 2009.01.16 16:24 신고  댓글주소  수정/삭제  댓글쓰기

    확인 결과 둘다 뜹니다. JavaScriptCore나 WTF프로젝트의 추가 include 패스에 "$(WebKitLibrariesDir)\include\pthreads", "$(WebKitLibrariesDir)\include\icu"가 있는데 문제는 해당 경로에 pthread.h나 unicode/uchar.h 같은 파일이 없어서 컴파일 에러가 납니다. 제가 소스를 Nightly꺼로 받았는데 혹시 이 소스가 실제 서버에 있는 소스와 일치하지 않는게 아닐까요? 한번 해보고 알려드리겠습니다

    • ingee 2009.11.19 13:26 신고  댓글주소  수정/삭제

      이전에 달았던 댓글이 의미 없는 것 같아 삭제했습니다. 바로 윗 댓글이 도움되면 좋겠습니다.
      WebKitLibrariesDir 환경 변수에 지정한 path가 문제라고 추측합니다. WebKitLibrariesDir 환경 변수에는 WebKit 소스트리 내부에 존재하는 WebKitLibraries\win 폴더에 대한 full path를 지정해야 합니다.

  3. 질문이요 2009.01.20 16:14 신고  댓글주소  수정/삭제  댓글쓰기

    저도 위에 질문드립니다..<-이분과같은현상인것 같은데...
    어디가 문제 인걸까요??
    환경변수설정도 제대로 하고,,
    그대로 했는데, 에러가 납니다..ㅠ

  4. tommy 2009.04.05 13:00 신고  댓글주소  수정/삭제  댓글쓰기

    최근에 웹킷을 빌드해야하는 업무를 맡게되었는데 ingee님의 글이 많은 도움이 되었습니다(아직 빌드는 못했습니다)
    근데 빌드 과정 중 WebKitLibrariesDir과 WebKitOutputDir 이 두 개의 환경변수는 직접 윈도우 환경변수로 셋팅해줘야 하더군요
    cygwin에서 export 로는 VC에 적용이 안되고 둘 다 해줘야 하는건지.. 아직 저도 해보고 있는 중인지라..
    저 두 개가 없어 문제가 생긴적이 있었습니다.
    아무튼 웹킷을 사용하는 분들 모두 좋은 결과가 있길 바랍니다

    자주 들리도록 하겠습니다
    좋은 하루 보내세요

  5. tommy 2009.04.05 19:39 신고  댓글주소  수정/삭제  댓글쓰기

    또 접니다 위의 두 환경변수는 cygwin과 윈도우에 동일하게 셋팅해줘야 하더군요
    제 경우 "pthread.h"와 "unistd.h" 문제는 이 방법으로 해결했습니다
    여전히 빌드는 못했습니다 ㅜㅜ;

    그런데 전 WebCore를 빌드하면서 오류가 발생하네요

    WebCorePrefix.cpp
    D:\Project\WebKit\WebKitLibraries\win\include\ConditionalMacros.h : error C2220: 경고가 오류로 처리되어 생성된 'object' 파일이 없습니다.

    이후 워닝이 몇개 발생하긴 하는데 저 에러 때문에 아무것도 안되네요
    빌드 순서를

    윈도우에서 TortoiseSVN 으로 소스 checkout -> 체크아웃중 에러발생
    리눅스에서 소스 checkout -> 윈도우로 복사 -> 빌드
    cygwin에서 svn 으로 checkout -> 빌드

    다 해봐도 결국 저 에러에서 걸립니다
    막막하네요..

  6. tommy 2009.04.05 20:39 신고  댓글주소  수정/삭제  댓글쓰기

    결국 빌드 성공했습니다
    웹킷은 엔진이다.. 라는 말을 명심해야겠네요
    앞으로도 자주 들르겠습니다
    수고하시고 좋은 하루 되세요

    • ingee 2009.04.06 10:36 신고  댓글주소  수정/삭제

      주말 늦은 시간까지 고생하셨군요. 자주 들러주시고 하시는 일에 대한 경험도 공유해주세요. 빌드 성공, 축하드립니다.

  7. west 2009.06.03 21:23 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요, 웹킷을 window xp에서 빌드해보고 있습니다.그런데 빌드를 하면 qmake를 찾지 못하고 빌드에러가 나는데요,
    http://trac.webkit.org/wiki/CygwinInstallerPackages
    에는 qmake나 QT 관련 내용은 없는 것같습니다.

    위에 빌드 캡처화면을 보면 VC가 돌아가는 것같은데요.
    혹시 qmake가 아니라 VC로 컴파일 되도록 window 빌드를 위해 따로 설정해줘야 하는 것이 있을런지요 ?

    • 박동진 2009.11.11 08:31 신고  댓글주소  수정/삭제

      저도 같은 문제를 겪었는데, 포멧을 했습니다.(별짓을 다했는데, 안되더군요..ㅡㅜ;;) 해결방안이 있다면, 공유부탁 드려요..(참고로 저는 vista 32bit에서 xp로 전환했습니다.)

    • ingee 2009.11.25 09:21 신고  댓글주소  수정/삭제

      qmake를 찾는건 Qt 버전으로 빌드하려고 그러는 겁니다. win32 버전으로 빌드하려 한다면 의도와 맞지 않는 겁니다.
      같은 문제를 겪게되어 "build-webkit" 스크립트를 분석해 보았습니다. "build-webkit" 스크립트를 실행할 때 명시적으로 "--qt" 옵션을 주거나 cygwin 콘솔의 환경변수로 QTDIR이 설정되어 있으면 Qt 버전으로 빌드하려고 시도하더군요.
      환경변수로 QTDIR이 지정되어 있는지 확인하시고 해당 변수를 제거(unset)해보시기 바랍니다.

    • west 2010.01.27 15:31 신고  댓글주소  수정/삭제

      저는 그냥 Visual c++ 2005에서 빌드 all 했습니다(작년 8월버전).
      WebKitTools\Scripts 폴더에 있는 아래 두가지 스크립트를 실행하고 빌드했습니다.
      update-webkit-support-libs
      update-webkit-auxiliary-libs
      참고하시구요.
      근데.. 최근 소스는 자꾸 빌드 완료후 win launcher 실행할려고 하면 실행 실패 나면서 구동실패해서 못하고 있습니다. ;;;

    • ingee 2010.01.28 01:30 신고  댓글주소  수정/삭제

      to west/
      WinLauncher.exe 가 있는 디렉토리에 사파리 브라우저 디렉토리의 DLL들을 (WebKit.dll 제외) 복사하면 될지도 모릅니다. safari.resource 였던가? 폴더도 복사해야 했던 것 같은데... 가물가물...

      실행 안될 때 뭔가 에러 메시지를 내지 않던가요?

      잘 해결되면 좋겠습니다.

  8. futurejo2 2009.06.13 21:50 신고  댓글주소  수정/삭제  댓글쓰기

    한참 고생중이렀는데, 감사합니다..

  9. 박정신 2009.08.03 16:12 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 Webkit에 관한 업무를 인턴과제로 회사로부터 받았습니다. 개념자체도 생소했었는데, ingee글 덕분에 겨우 webkit을 빌드 할수 있었습니다. 그런데 빌드 하고 나니 자료가 찾기가 너무 힘들다 보니까 어디서 부터 어떻게 개발을 시작해야 할 지도 모르겠네요.. Webkit을 이용해서 간단한 RSS reader를 짜보려고 합니다. Javascript로 개발하는것으로 알고 있는데 Webkit소스의 어느 파일에서 코딩을 시작해야하는지부터 깜깜합니다. 도움부탁드려요 참고할만한 사이트나 정보가 있으신지요?

    • ingee 2009.08.03 16:38 신고  댓글주소  수정/삭제

      재밌는 주제를 받으셨네요. 선임 개발자분과 프로그램의 골격에 대해 상의하세요. 하실 일이 WebKit 내부를 수정해야 하는 일인지, WebKit을 있는 그대로 (컴포넌트인채로) 이용해야 하는 일인지부터 결정하셔야겠습니다.

  10. 박정신 2009.08.03 17:31 신고  댓글주소  수정/삭제  댓글쓰기

    컴포넌트인채로 이용하려 합니다. Webkit nightely source를 다운받았는데 어느 부분을 무슨 language로 건드려야 하는건가요? rss짜는것은 둘째 치고더라고 시작을 못하고 있으니 답답하네요 ..

    • ingee 2009.08.04 07:56 신고  댓글주소  수정/삭제

      함께 일하는 사람이 아니면 도와줄 수 없는 부분이 있습니다. 님에게 일을 맡기신 선배님이 계실겁니다. 저보다는 함께 일하는 (또는 일하게 될) 그분과 긴밀하게 소통하는게 좋을 것 같습니다.
      WebKit을 컴포넌트인채로 이용한다면, WebKit을 수정할게 아니라 WebKit을 불러쓰는 바깥쪽 코드를 작성해야 하는 상황 같습니다. 다시 한번 말씀 드리지만, 과제를 내주신 분이 원하는 것이 무엇인지 분명하게 파악해보세요. "요구사항 분석"을 깔끔히 끝내야 일을 수월하게 진행할 수 있습니다.

  11. 박동진 2009.11.17 17:29 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 ^^
    웹킷 빌드하고 런쳐를 실행시켜 보면 폰트가 ie나 다소 흐려 보이는데요.
    GDI를 사용해서 그런걸까요? 아니면, 폰트 설정문제일까요?

    • ingee 2009.11.19 10:39 신고  댓글주소  수정/삭제

      WebKit의 Windows 포트(port)는 CoreGraphics 라는 애플의 그래픽 시스템 DLL을 사용합니다. GDI를 쓰지 않습니다. 폰트 설정을 바꿔서 좀 더 진하게 보이게 할 수 있는지는 모르겠습니다. 가능할 것 같기는 합니다.