VLC 重新编译第三方库的预编译包contrib
VLC的引用了很多开源的第三方库,均放到VLC目录下的contrib中(本来开始编译是2.1.x以上版本,以前或以后可能会变化),在Windows版本编译中,contrib文件夹中仅仅下载VLC官网上已经编译好的预编译包后解压到该目录下,要修改编译脚本(compile.sh和 contrib/src下的main.mak)为fetch所有第三方包中,下载后开始自动编译(由main.mak和contrib/src/***/rules.mak控制)。
一旦编译通过,一般来说,在下一次执行VLC编译脚本时,就不会再重新编译第三方包了,因为对于make来说,这些第三方包处于已安装状态,所以一旦修改了这些第三方库文件,就需要重新编译,重新编译前就需要将已安装的包卸载掉,编译脚本通过判断隐藏文件(.包名)和prefix路径下的文件,一旦存在就不需要重新编译(此处为各个包中make install决定),对于开发者来说,只需要在compile.sh(android版为compile-libvlc.sh)中的make contrib 前加上make clean即可,但此处需要注意,不能直接加上make clean,因为clean对于main.mak来说,会连同第三方库源码包都删除掉,而我们只需要删除已安装的文件即可,因此在main.mak中新增一个参数动作cleaninstall,如下:
installclean:
-$(RM) $(foreach p,$(PKGS_ALL),.$(p) .sum-$(p) .dep-$(p))
-$(RM) toolchain.cmake
-$(RM) -R "$(PREFIX)"
以上代码可在main.mak中先搜索install:后,在此段后面加上即可,修改完成后,在回到compile.sh(android版为compile-libvlc.sh)中的contrib编译段的make 前加上make cleaninstall,
接下来,再修改contrib/src下的各个包的rules.mak,让make时,不再重新解压源码(即注释掉download和UNPACK相关的命令)直接make即可。
其实还可以修改更准确的,比如实现clean指定的某一个第三方包,如以下内容为删除DVD相关的几个库,实现只重新编译这几个库:
cleandvd:
-$(RM) "./.dvdcss"
-$(RM) "./.sum-dvdcss"
-$(RM) "./.dep-dvdcss"
-$(RM) "./.dvdnav"
-$(RM) "./.sum-dvdnav"
-$(RM) "./.dep-dvdnav"
-$(RM) "./.dvdread"
-$(RM) "./.sum-dvdread"
-$(RM) "./.dep-dvdread"
# -$(RM) toolchain.cmake
-$(RM) -R "$(PREFIX)/include/dvdcss/*.*"
-$(RM) -R "$(PREFIX)/include/dvdnav/*.*"
-$(RM) -R "$(PREFIX)/include/dvdread/*.*"
-$(RM) -R "$(PREFIX)/share/doc/libdvdcss/*.*"
-$(RM) -R "$(PREFIX)/share/doc/libdvdnav/*.*"
-$(RM) -R "$(PREFIX)/share/doc/libdvdread/*.*"
-$(RM) "$(PREFIX)/lib/libdvdcss.*"
-$(RM) "$(PREFIX)/lib/libdvdnav.*"
-$(RM) "$(PREFIX)/lib/libdvdread.*"
-$(RM) "$(PREFIX)/lib/pkgconfig/dvdcss.*"
-$(RM) "$(PREFIX)/lib/pkgconfig/dvdnav.*"
-$(RM) "$(PREFIX)/lib/pkgconfig/dvdread.*"
VLC 重新编译第三方库的预编译包contrib的更多相关文章
- Linux下编译第三方库的问题
因为各个Linux发行版之间的差异还是挺大的,有一些预安装在系统上的基本库是不一样的(不仅仅是版本,有一些是有和无的区别). 那么问题来了: 编译第三方库./configure的时候一般我们不会定制那 ...
- QT:提高QT Creator编译速度,配置预编译头Stable.h
提高QT Creator编译速度,配置预编译头Stable.h QT Creator支持预编译头提高编辑速度,网上有些教程写得不详细,走了弯路,具体实现方法如下. (1)工程.PRO文件加入下面代码 ...
- xcode编译时,有第三方库时,编译设置build active architecture only问题
本文转载至 http://blog.csdn.net/ysysbaobei/article/details/16371263 编译静态库 1.http://blog.csdn.net/dengdeng ...
- PHP-Mysqli扩展库的预编译
(1)预编译的好处 假如要执行100条类似的sql语句,每一次执行,在MySQL端都会进行一次编译,效率很低.提高效率的方法就是--减少编译的次数. 先制造一个sql语句的模板,在MySQL端预先编译 ...
- mybatis中预编译sql与非预编译sql
预编译sql有缓存作用,非预编译没得 mybaits中带有#传参的有预编译左右,$没得 多用#传参 预编译语句的优势在于归纳为:一次编译.多次运行,省去了解析优化等过程:此外预编译语句能防止sql注入 ...
- C语言的预编译,程序员必须懂的知识!【预编译指令】【预编译过程】
由“源代码”到“可执行文件”的过程包括四个步骤:预编译.编译.汇编.链接.所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译阶段仅仅对源代码的单词进行变换,而不是对 ...
- ubuntu 14 编译视频第三方库ijkplayer,能够在winows下使用
1.先安装相关环境,详细在这里http://blog.163.com/zhuowr2006@126/blog/static/98334653201612310647799/ 依据上面那个安装之后,会 ...
- 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?
在查找预编译头时遇到意外的文件结尾.是否忘记了向源中添加“#include "StdAfx.h"”? 右键选择该文件.cpp格式的->属性->预编译头,→ 不使用预编译 ...
- [转][ASP.NET]ASP.NET 预编译网站
[转自]https://msdn.microsoft.com/zh-cn/library/ms227430(v=vs.80).aspx C:\Windows\Microsoft.NET\Framewo ...
随机推荐
- oracle行列转换函数的使用
oracle 10g wmsys.wm_concat行列转换函数的使用: 首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行 ...
- php rmdir()删除目录的需要注意的几点
原文地址:http://www.manongjc.com/article/1316.html php rmdir()函数用于删除目录,但是在使用这个函数删除目录之前,我们必须要做一些判断,首先要判断目 ...
- CS中调用微软自带com组件实现音频视频播放(wf/wpf)
1.mp3播放器:工具箱中右键,在弹出的菜单中选择“选择项”,添加“com组件”,选择名称“windows Media Player",点击确定就会在工具箱新增一个“windows Medi ...
- 关闭linux下的使用的端口
lsof -P -n -i kill pid 另外防火墙 iptables之类的也可以关闭端口
- 剑指Offer:面试题18——树的子结构(java实现)
问题描述: 输入两棵二叉树A和B,判断B是不是A的子结构.二叉树结点的定义如下: public class TreeNode { int val = 0; TreeNode left = null; ...
- 剑指Offer:面试题7——用两个栈实现队列(java实现)
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 首先定义两个栈 Stack<Integer> stack1 = new Stack<I ...
- python学习笔记(win32print API介绍)
最近博主在研究用python控制打印机 这里整理下win32print的API介绍,官网地址http://timgolden.me.uk/pywin32-docs/win32print.html Op ...
- unity区分点击在3D物体还是2D UI上
当场景中的3D物体需要响应点击,但同时有UI显示时,存在判断点击是在3D物体上还是UI上的问题,办法如下: 1. 射线检测所有2D 3D物体,有2D物体被检测到时表明当前有UI.但无论Physics2 ...
- Runtime机制之结构体及操作函数
一.动态语言 Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:具有灵活性,比如:消息转发,方法交换等.它有一个运行时系统Ob ...
- 【测试】使用hr用户下的employees表写一条SQL语句,执行计划走索引全扫描
SQL> select count(*) from employees; COUNT(*) ---------- Execution Plan ------------------------- ...