流媒体04:VLC2.2.1的Linux编译及调试
2023-09-14 08:59:51 时间
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
编译完成后,运行测试。
1
$ ./vlc ~/01.avi
从运行结果看,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 \GDB调试
--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。
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 ~~
jeremy_wong 本博客全部转自我的个人博客,http://higoge.github.io,上面的文章更全。 联系我请发邮件到higoge@gmail.com或微博 @挨踢汪汪
相关文章
- Linux Nano命令
- 【Linux】yum 安装 JDK
- 简单实例讲解linux的module模块编译步骤
- Linux sed命令详解
- linux usb信息查看与调试
- 巧用linux服务器的/dev/shm/,如果合理使用,可以避开磁盘IO不给力,提高网站访问速度。
- 【Linux基础】查看某一端口是否开放(1025为例)
- 【学习总结】快速上手Linux玩转典型应用-第6章-linux常用命令讲解
- 信号概述 硬件异常将产生信号 进程间通信概述 进程间通信 进程间通信功能 Linux 操作系统支持的主要进程间通信的通信机制 linux 进程间通信(IPC)由以下几个部分发展而来 数据传输 信号
- 【Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )
- Linux linux echo命令的-n、-e两个参数
- L86.linux命令每日一练 -- 第12章 Linux系统常用内置命令(二)
- L82.linux命令每日一练 -- 第11章 Linux系统管理命令 -- dmidecode和lspci
- L80.linux命令每日一练 -- 第11章 Linux系统管理命令 -- ntsysv和setup
- L67.linux命令每日一练 -- 第十章 Linux网络管理命令 -- netstat和ss
- L45.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- sudo和id
- L36.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- locate和updatedb
- L33.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- du和date
- Linux系统shell脚本之nginx编译安装
- Linux下的文件系统修复
- linux基本功系列之-lsattr命令实战
- linux基功系列之man帮助命令实战
- 嵌入式Linux,4G模组驱动,移远EC20、EC25使用随笔-内核kernel
- geo ftp环境变量 export source ~/.bashrc Linux中filezilla下载ftp文件 ftp.ncbi.nlm.nih.gov linux下载 ftp下载geo非原始数
- The Linux device model
- 【Linux】linux经常使用基本命令
- 在Visual Studio中调试Linux控制台程序
- Linux下有哪些命令行的软件堪称神器?
- Linux 重定向 2>&1 , 1>&2
- 74:应急响应-win&linux分析后门&勒索病毒&攻击 ==》暴力破解攻击成功的在4624的eventID里!PChunter可查看非系统的可疑启动项/服务/定时任务,还是很直观的!Linux下gscan也不错,EDR可参考。