윈도 환경에서 v8 빌드

이번에도 Visual Studio Community 2015이 설치되어있다는 조건하에 진행.

v8의 위키 페이지(https://github.com/v8/v8/wiki)에서 보면 빌드 방법으로는 GN을 사용하는 것. 그리고 deprecated가 된 Gyp가있다. 무엇을 사용하든 depot_tools라는것이 필수.

예전에 한번 심심풀이로 빌드해봤을때는 gyp설치가 잘 안되어 고생을 좀 했지만 큰 문제없이 hello world를 빌드했는데… 지금은 gyp가 deprecated로 표시되어있어 gn을 사용해 보려하니 관련 내용이 부실해서 크게 애먹었다(…).

그래서 gyp를 사용하는걸 더 추천하고싶고, gn은 단점이있어 그다지 추천하고싶지않다. Continue reading 윈도 환경에서 v8 빌드

ffserver for Windows 64bit 빌드

rtsp 테스트를위해 윈도 서버에 ffserver를 올릴 일이 생겼다. ffmpeg 홈페이지에서 받을 수 있는 윈도용 바이너리는 ffserver가 없다. 반나절 msys에서 ‘configure –toolchain=msvc’로 아무리 컨피그를 해봐도 ffserver가 빌드 안되길레 구글링 해봤더니 Cygwin에서 빌드된다는 문서가 나왔다. 그것도 밤 12시 쯤 집에서 마지막으로 한번 더 찾아봤을때서야 찾게되었다(…).

암튼 빌드 과정은 아래와같고 64비트 버전 기준이다.

 

1. Cygwin 설치

https://cygwin.com/install.html에서 Cygwin 다운로드. (OS가 64비트라서 64비트 버전을 받았다.)

– setup-x86_64 실행. 왠만한건 Next하면 되며, Local Package Directory에서 에러가 날 수 있지만 무시하면 된다.

– 아래 화면에서 속도가 잘 나오도록 daum 미러서버를 선택.

Cygwin select mirror

– Select Packages에서 Devel Category를 펼친다음 아래 항목들을 찾아서(Search에 입력하여 검색 가능) 선택

gcc-core, gcc-g++, git, make, yasm

– Editors에서 vim을 선택하여 ‘다음(N)’ 선택

 

2. 소스코드 다운로드
소스코드 다운로드 시 3.1.2버전을 받도록 하였다. 이유는 다음 버전부터 ffserver가 제거되기때문이다.

– 시작메뉴에서 Cygwin64 Terminal을 찾아서 실행

– git config core.autocrlf 실행하여 false가 출력되는지 확인

– true일경우 git config –global core.autocrlf false 실행, 이후 다시 git config core.autocrlf 실행하면 false가 출력됨

– git clone –branch n3.1.2 https://git.ffmpeg.org/ffmpeg.git 실행하여 소스코드 다운로드

– ffmpeg 폴더로 이동 (cd ffmpeg)

– ./configure –prefix=../ffmpeg-3.1.2 실행

– vi config.h 실행 (vim 사용법을 모른다면 구글링을)
핵심으로는 i 누르면 입력(끼워넣기)모드, ESC누르면 커서이동모드, 커서이동모드에서는 / 입력 후 검색할 단어 입력 가능, 커서이동모드에서 : 입력 후 wq 입력하면 저정 후 종료 정도이다. (검색어, wq입력 후 엔터는 필수)

– HAVE_ARC4RANDOM의 값을 1에서 0으로 수정 (링크에서 나는 에러 패치)

– #ifndef 다음라인(약 3~4번째 라인)에 _XOPEN_SOURCE 700 추가 (sigaction 함수선언 문제 해결)

– 저장 후 종료

– make -j5 실행 (-j 옵션은 동시빌드 개수. i7이면 8정도로 해도 무난하다.)

– make install 실행

3. 완료

아마 위 대로만 진행하면 에러없이 c드라이브의 cygwin64 – home – iruis – ffmpeg-3.1.2 폴더에서  ffserver.exe 파일을 얻을 수 있다. 단, cygwin64 – bin 폴더에서 cygwin1.dll 파일을 ffserver.exe 파일이 있는 폴더에 복사해둬야된다.

그러면 프롬프트상에서 ffserver를 실행하면 아래와같이 실행되는 ffserver 결과를 볼 수 있다. 설정은 다루지 않을것이기때문에 잘 설명 된 자료를 찾아서 ffserver를 사용하면 될것이다.

ffserver

 

그나저나 구글링을 더 심도있게하면 이미 빌드된 윈도용 ffserver를 받을 수 있는건 아니겠지(…)

 

참고:
https://ffmpeg.org/download.html (소스 저장소 정보)
https://trac.ffmpeg.org/wiki/StreamingGuide (Cygwin에서 ffserver가 빌드 됨)
https://ffmpeg.org/index.html#news (다음버전 부터는 ffserver는 drop 됨)
http://stackoverflow.com/a/37443771 (에러 패치 참고내용)

Windows 환경에서 Qt 5.7.0 빌드

Qt 4버전대만해도 4.8.6과같이 몇단계씩 꽤나 오랜기간동안 하위버전이 유지되었는데 요즘의 Qt 5는 몇달사이 5.6.1이였다가 뜬금없이 5.7.0으로 하위버전이 업데이트되었다. 대체로 5버전대는 한두번 업데이트 이후 하위버전이 올라가는거같다. 크롬과같이 빠른 변화와 버전업이 이루어지는 정책이 어느정도 Qt측에서도 이루어지고있는건가 싶기도하다.

이번 버전업에는 3D관련 업데이트가 주를 이루는거같으니 그다지 기능상에서의 변화는 없다고봐도 무방할거같다. 여담이지만 5.5버전에서는 frameless window 옵션이 추어진 창에서 HWND 형식의 핸들을 얻기위해 winId() 함수를 위젯에서 호출하게되면 그 이후로는 UI의 업데이트가 발생했을 때에도 화면이 업데이트 안되는 버그가 있었다. (5.6에서인가 버그가 해결되었다.)

직접 빌드하기 전 주의사항으로는 콘솔명령이 익숙하지 않거나 에디터 플러스나 울트라에디터를 사용하지 않는다면 빌드 안하고 홈페이지에서 이미 빌도된 바이너리를 받아서 설치하는게 더 낫다. 직접 빌드하는건 디버깅을 Qt Framework의 모듈 함수 내부까지 해야할 경우말고는 그냥 경험용으로 빌드 해보는것 밖에는 이유가 없다.

여담으로 5.6버전 이전엔 QSql의 ODBC 모듈에서 메모리 누수현상이 있었는데 당시 어디서 누수가 발생하는지 찾기위해 직접 빌드하여 며칠동안 헤맨덕에 원인을 찾고 패치를 재출하고 직접 수정하여 라이브러리를 사용한적이 있었다. 이런 상황이 아니라면 굳이 빌드해야 하는 이유는 없다.

참고로 WebView기능을 재공하는 WebEngine 모듈을 빌드하려면 8기가램 PC인 경우 빌드하길 추천한다. 자체적으로 병렬빌드를 수행하며 워낙 규모가 방대하여 컴파일할 때 파일들이 메모리에 캐싱되어야 느려지지않고, 링크를 할 때 메모리를 3기가 넘게 소모한다.

아래서부터는 과정 및 빌드 방법 Continue reading Windows 환경에서 Qt 5.7.0 빌드

Boost + Visual Studio 환경에서 라이브러리 빌드

Boost 버전: 1.61.0
Visual Studio 버전: Community 2015

Boost는 헤더만 include하면 되는것이 기본이지만 아래와같은 라이브러리는 빌드해야한다.
Chrono, Context, Filesystem
GraphParallel, IOStreams
Locale, MPI, ProgramOptions
Python, Regex, Serialization
Signals, System, Thread, Timer, Wave

아래 라이브러리는 상황에 따라 빌드 필요.
DateTime, Graph, Math
Random, Test, Exception

참고: http://www.boost.org/doc/libs/1_61_0/more/getting_started/windows.html#header-only-libraries
다운로드: http://www.boost.org/users/download/

빌드 방법:

Continue reading Boost + Visual Studio 환경에서 라이브러리 빌드