流媒体04:VLC2.2.1的Linux编译及调试

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

编译

在此只记录命令。

123456
$ 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并没有此问题。

12
$ sudo apt-get install vlc$ vlc ~/01.avi

通过运行如下命令,可以看到官网VLC的编译脚本,有兴趣的可以研究下。

1
$ vlc --extraintf=logger -vvv ~/01.avi

编译脚本如下。请酌情修改${prefix}相关参数。

123456789101112131415161718192021222324252627282930313233343536373839
./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。

123
$ gdb ./vlc$ b 115$ run ~/01.avi

程序会在vlc.c第116行停止。这就是main函数的入口。

QT Creator调试

安装并启动QT Creator。

12
$ 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 ~~

时间: 2024-10-29 10:40:45

流媒体04:VLC2.2.1的Linux编译及调试的相关文章

c语言-还是Linux编译问题 快回答啊 有c币

问题描述 还是Linux编译问题 快回答啊 有c币 三.income文件的第三列为职业,第四列为月收入.用awk或shell脚本求各职业的平均月收入.(25分) 如income的内容为: 01 王洁怡 教师 5800 02 肖蔓 文员 2980 03 梅梅 教师 4500 04 何焕娣 教师 6000 05 黄如金 医生 8000 06 周文员 教师 3800 07 马潇潇 医生 10000 08 陈虹香 文员 3100 09 罗艳 医生 4900 10 连天碧 文员 2500 则输出为: 教师

ubuntu14.04安装gem5后MIPS,X86编译出错

问题描述 ubuntu14.04安装gem5后MIPS,X86编译出错 在编译ARM时有warning说protobuf没有,所以我安装了protobuf,ARM 编译通过.然后编译MIPS和X86时都会中断报错,显示: In file included from build/MIPS/mem/comm_monitor.hh:49:0, from build/MIPS/mem/comm_monitor.cc:45: build/MIPS/proto/protoio.hh:50:44: fatal

Linux编译内核,内核源码在哪里?

Linux编译内核,内核源码在哪里? 1.一般在发行版的盘里都有,比如 RedHat,一般在第二.第三张上 2.4 内核的叫 kernel-source-2.4.xx-xx.rpm2.6 内核的叫 kernel-devel-2.6.xx-xx.rpm 2.去www.kernel.org 下载一份你喜欢的内核版本,重新编译安装也可以.

Linux编译内核时提示“ Too many open files”的解决方法

Linux编译内核时提示" Too many open files"的解决方法如下: 这是因为file-max默认值(8096)太小.要解决这个问题,可以root身份执行下列命令(或将它们加入/etc/rcS.d/*下的init脚本): # echo "65536" > /proc/sys/ 最后进入解压后的目录,运行安装命令. # cd vmware-linux-tools# ./install.pl

在 Linux下编译及调试 C 代码的简易指南

对于Linux下的C程序员来 说,几乎天天都会和Linux打交道.但在很多人的眼中,Linux是一个易用性极差.靠命令驱动的操作系统,根本无法与有着友好用户界面的 Windows相比.确实是这样的,即使大家的程序是运行在Linux下,基于以下种种原因,我们的大部分工作还是在Windows下完成的: 第一,除了编译调试代码之外,每个程序员还有很多工作要做,像文档编写.邮件发送及回复.PPT制作等,这些工作在Windows下做要更方便快捷一些. 第二,公司及项目组的资源有限,一般不会为每个开发人员配

Linux 编译的时候一直出现 command not found

问题描述 Linux 编译的时候一直出现 command not found ## 上边是我写的简单的 进程 不知道为什么 每次编译的时候 都会出现 command not found 不知道原因错在哪里 小弟是Linux新手 恳请各位哥哥 帮忙解决一下呗 谢谢啦~**** 解决方案 应该是没有安装gcc吧,这是linux什么系统? 解决方案二: 看提示就是说没安装gcc吧 解决方案三: 刚才切换到root用户 输入完 yum -y install gcc 命令之后 就出现上边的这个 这是什么原

一份简单的在 Linux下编译及调试 C 代码的指南

一份简单的在 Linux下编译及调试 C 代码的指南 对于Linux下的C程序员来说,几乎天天都会和Linux打交道.但在很多人的眼中,Linux是一个易用性极差.靠命令驱动的操作系统,根本无法与有着友好用户界面的Windows相比.确实是这样的,即使大家的程序是运行在Linux下,基于以下种种原因,我们的大部分工作还是在Windows下完成的: 第一,除了编译调试代码之外,每个程序员还有很多工作要做,像文档编写.邮件发送及回复.PPT制作等,这些工作在Windows下做要更方便快捷一些. 第二

linux + ffmpeg + eclipse 调试

使用linux + ffmpeg + eclipse调试步骤OS : ubuntu 12.04Eclipse : 3.7.2 为Eclipse安装cdt插件,使其支持c/c++ 导入ffmpeg项目 File --> Import --> c / c++ --> Existing Code as Makefile Project 输入 Project Name, 选择ffmpeg所在目录, Toolchain选择Linux GCC  项目右键 --> Debug As -->

android/linux 怎么将调试串口切换成普通串口

问题描述 android/linux 怎么将调试串口切换成普通串口 已经试过如下方法:1.在内核编译过程中执行make menuconfig Character devices ---> Serial drivers ---> S3C2410 serial port support [ ] Console on S3C2410 serial port [注]去掉这项即可 不行.2.fp = open(""/dev/ttySAC1""O_RDONLY);