본문 바로가기

VLC

VLC 를 Cygwin에서 컴파일하기.

삽질 Report
1. make 도중 dshow.cpp 관련하여 다음과 같은 에러가 죽 떴었다.
/usr/lib/gcc/i686-pc-mingw32/3.4.4/include/c++/cwchar:146: error: `::fgetwc' has not been declared
위 에러와 비슷한 모양, 또는 include 관련하여 declare가 안되었다고 계속 삑사리 냈었는데 이때문에 대략 3일 소요. 할수 있는 짓을 다 해보았지만 해결할 수 없었다.
그런데 퍼뜩 생각난 것이 이전에 ACE Library를 설치하느라 CLUS_INCLUDE_PATH를 강제 지정했었던 것.
재빨리 .bash_profile 을 열어보았더니 아니나 다를까 지정되어 있엇다.

export ACE_ROOT="/ACE_wrappers"
#export LD_LIBRARY_PATH="$ACE_ROOT/lib:$LD_LIBRARY_PATH"
export PATH=$PATH:/usr/local/lib:./
#export CPLUS_INCLUDE_PATH=/usr/include:/usr/local/include:$CPLUS_INCLUDE_PATH

낼름 #을 이용하여 주석처리 해버리고 make를 돌리니 돌아갔다. 이런 어이없는 것 때문에 시간을 그렇게 많이 쓰다니 ㅠ
참고로 어디에도 없는 내용이었다. 나쁜 VLC 놈들 ㅠ

2. make 잘 하고, 위의 내용중에 있는 cygwin에서 window용으로 만들기 위하여
make vlc-win32-base 인가.. 아무튼 이런거 했다.
잘 되었는데, 생성된 vlc.exe 녀석이 어이없게도 실행하려 했더니
access denied 랜다. 얼어죽을!
열받아서 chmod 777 해버리고 다시 했으나 여전히 access denied.
내가 root인데 무슨 권한이 없단 말이냣!!! -_-
이걸 놓고 또 한참 삽질했다.
별다르게 손댄건 없는데 -_- 다음날 와서 다시 끼적끼적 해보니 또 실행이 되어비리신다.
이 놀라운 녀석들.

3. codec이랑 frame의 정보를 손을 대서 좀 만들어야 할짓이 있어서 방대한 소스에 대한 profiling이 필수적으로 필요했다.
./bootstrap && \
PKG_CONFIG_PATH=/usr/win32/lib/pkgconfig \
CPPFLAGS="-I/usr/win32/include/freetype2 -I/usr/win32/include -I/usr/win32/include/ebml" \
LDFLAGS=-L/usr/win32/lib \
CC="gcc -pg -mno-cygwin" CXX="g++ -pg -mno-cygwin" \
./configure \
--disable-gtk \
--enable-nls --enable-sdl --with-sdl-config-path=/usr/win32/bin \
--enable-ffmpeg --with-ffmpeg-mp3lame --with-ffmpeg-faac \
--with-ffmpeg-zlib --enable-faad --enable-flac --enable-theora \
--with-wx-config-path=/usr/win32/bin \
--with-freetype-config-path=/usr/win32/bin \
--with-fribidi-config-path=/usr/win32/bin \
--enable-livedotcom --with-livedotcom-tree=/usr/win32/live.com \
--enable-caca --with-caca-config-path=/usr/win32/bin \
--with-xml2-config-path=/usr/win32/bin \
--with-dvdnav-config-path=/usr/win32/bin \
--disable-cddax --disable-vcdx --enable-goom \
--enable-twolame --enable-dvdread \
--enable-debug --disable-mkv

위와 같이 booltstrap시에 CC와 CXX에 -pg 옵션을 추가하여 컴파일했다.
크게 문제는 없었다.
그런데, 상기 기술한 2의 문제가 발생. 실행이 되어야 gmon.out을 가지고 프로파일링을 하던 말던 할것 아니냐!!!
근데 2번 문제가 어이없이 해결이 되어버려, result를 얻어내긴 했다.
다른것 찾다가 알아낸 일이지만 VLC는 multi thread라서 gprof으로는 제대로된 profiling을 얻어내기 힘들댄다.
cygwin에선 젠장 어쩌라는거야..



4.
한참 뒤져보니 VLC configure를 할 때.
--disable-xxxxx 를 통해서 수많은 플러그인과 라이브러리와 component들을 disable시키고 제법 빠르고 가볍게 만들수 있는것 같다.
예를 들면 이런식으로.
./configure --enable-skins2 --disable-pda --enable-wxwidgets --disable-opie --disable-macosx --disable-qnx --disable-ncurses --enable-xosd --enable-visual --disable-goom --disable-slp --disable-lirc --disable-joystick --disable-corba --disable-livedotcom --disable-dvdread --enable-dvdnav --disable-dshow --enable-dvbpsi --enable-v4l --disable-pvr --disable-vcd --disable-satellite --disable-dvb --enable-ogg --disable-mkv --disable-mod --disable-libcdio --disable-vcdx --disable-cddax --disable-libcddb --enable-x11 --enable-xvideo --enable-glx --disable-fb --disable-mga --disable-sdl --enable-freetype --enable-fribidi --disable-svg --disable-qte --disable-hd1000v --disable-directx --disable-wingdi --disable-svgalib --disable-ggi --disable-glide --disable-aa --disable-caca --enable-oss --disable-esd --disable-arts --enable-alsa --disable-waveout --disable-coreaudio --disable-hd1000a --enable-mad --enable-ffmpeg --disable-faad --disable-quicktime --enable-a52 --disable-dts --disable-flac --enable-libmpeg2 --enable-vorbis --disable-tremor --disable-speex --disable-tarkin --disable-theora --disable-cmml --enable-utf8 --disable-pth --disable-st --disable-gprof --disable-cprof --disable-mozilla --disable-testsuite --disable-optimizations --disable-altivec --enable-debug --disable-release --enable-sout --enable-galaktos --enable-httpd


5. 참고한 사이트 모음
http://www.videolan.org/vlc/download-sources.html

http://wiki.videolan.org/Subversion#Projects_on_VideoLAN.27s_SVN

http://blog.naver.com/kingseft?Redirect=Log&logNo=140010302765
http://blog.naver.com/kingseft.do?Redirect=Log&logNo=140035026543
http://blog.naver.com/kingseft.do?Redirect=Log&logNo=140010325743
http://kldp.org/node/64485
http://wiki.videolan.org/Win32Compile

아 아무튼 삽질 너무 오래했다.

이제 이놈을 또 어떻게 구워삶는담.