Windows环境下编译的VLC或通过Linux交叉编译的VLC,调试起来非常麻烦,之前的51CTO的博客写过老版本的VLC的调试,改动太多,速度也很慢,故新版本并没有继续在类似环境下继续折腾VLC的调试。偶然发现Ubuntu下直接编译VLC很快很好很方便,而且配合GDB调试只要加一条指令即可。
另外,配合QT Creator,在IDE中设置断点,读取打印变量等都非常的直观。
本文介绍VLC2.2.1的Linux编译,当然,编译的主要目的是:调试。
环境
与交叉编译VLC2.2.1一样的环境,请参考流媒体02:Linux交叉编译VLC-2.2.1。
编译
在此只记录命令。
1 2 3 4 5 6
|
$ sudo apt-get build-dep vlc -y $ tar xJvf vlc-2.2.1.tar.xz $ cd vlc-2.2.1/ $ ./bootstrap $ ./configure --enable-debug $ make -j2
|
编译完成后,运行测试。
从运行结果看,VLC的播放窗口与原有界面分离了,没有找到解决原因。
官方的VLC并没有此问题。
1 2
|
$ sudo apt-get install vlc $ vlc ~/01.avi
|
通过运行如下命令,可以看到官网VLC的编译脚本,有兴趣的可以研究下。
1
|
$ vlc --extraintf=logger -vvv ~/01.avi
|
编译脚本如下。请酌情修改${prefix}
相关参数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
./configure '--includedir=${prefix}/include' \ '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' \ '--localstatedir=/var' '--libdir=${prefix}/lib/x86_64-linux-gnu' \ '--libexecdir=${prefix}/lib/x86_64-linux-gnu' \ '--disable-dependency-tracking' '--build=x86_64-linux-gnu' \ 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro' \ '--config-cache' '--disable-maintainer-mode' '--disable-silent-rules' \ '--disable-update-check' '--enable-fast-install' '--prefix=/usr' \ '--docdir=/usr/share/doc/vlc-nox' '--libdir=/usr/lib' '--sysconfdir=/etc' \ '--with-binary-version=1' '--enable-a52' '--enable-aa' '--enable-bluray' \ '--enable-bonjour' '--enable-caca' '--enable-chromaprint' '--enable-dbus' \ '--enable-dca' '--enable-directfb' '--enable-dvbpsi' '--enable-dvdnav' \ '--enable-faad' '--enable-flac' '--enable-fluidsynth' '--enable-freerdp' \ '--enable-freetype' '--enable-fribidi' '--enable-gles1' '--enable-gles2' \ '--enable-gnutls' '--enable-jack' '--enable-kate' '--enable-libass' \ '--enable-libmpeg2' '--enable-libxml2' '--enable-lirc' '--enable-live555' \ '--enable-mad' '--enable-mkv' '--enable-mod' '--enable-mpc' '--enable-mtp' \ '--enable-mux_ogg' '--enable-ncurses' '--enable-notify' '--enable-ogg' \ '--enable-opus' '--enable-pulse' '--enable-qt' '--enable-realrtsp' \ '--enable-samplerate' '--enable-schroedinger' '--enable-sdl' '--enable-sftp' \ '--enable-shine' '--enable-shout' '--enable-skins2' '--enable-speex' \ '--enable-svg' '--enable-taglib' '--enable-theora' '--enable-twolame' \ '--enable-upnp' '--enable-vcdx' '--enable-vdpau' '--enable-vnc' \ '--enable-vorbis' '--enable-x264' '--enable-zvbi' \ '--with-kde-solid=/usr/share/kde4/apps/solid/actions/' \ '--disable-decklink' '--disable-dxva2' '--disable-fdkaac' \ '--disable-gnomevfs' '--disable-goom' '--disable-libtar' \ '--disable-mfx' '--disable-opencv' '--disable-projectm' \ '--disable-sndio' '--disable-svgdec' '--disable-telx' \ '--disable-vpx' '--disable-vsxu' '--disable-wasapi' \ '--enable-alsa' '--enable-atmo' '--enable-dc1394' \ '--enable-dv1394' '--enable-linsys' '--enable-omxil' \ '--enable-udev' '--enable-v4l2' '--enable-libva' '--enable-vcd' \ '--enable-smbclient' '--disable-oss' '--enable-crystalhd' '--enable-mmx' \ '--enable-sse' '--disable-neon' '--disable-altivec' \ 'CFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security' \ 'CXXFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security' \ 'build_alias=x86_64-linux-gnu' \ 'OBJCFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security'
|
GDB调试
运行GDB。
1 2 3
|
$ gdb ./vlc $ b 115 $ run ~/01.avi
|
程序会在vlc.c
第116行停止。这就是main
函数的入口。
QT Creator调试
安装并启动QT Creator。
1 2
|
$ sudo apt-get install qt-creator $ qtcreator
|
“New Project” -> “Import Project” -> “Import Existing Project”,输入Project名称,选择VLC-2.2.1的路径。File Selection,默认。
在bin/vlc.c
的115行设置断点,按F5调试,选取VLC的可执行文件,即可。
~~ EOF ~~