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.*"

时间: 2024-10-06 07:05:29

VLC 重新编译第三方库的预编译包contrib的相关文章

iOS开发遇到的坑之六--使用cocopods管理第三方库时,编译出现Library not found for -lPods问题的解决方法

在项目中有时候会遇到Library not found for -lPods(这里的IPods指的是你具体的第三方库)的问题 出现这个错误的原因是:xcode在编译的时候找不到这个库,从而导致项目无法编译! 这里给出几种解决办法: 第一种: a) Search from 'Library' from the Target Settings view and double-click to inspect the value of Library Search Paths b) There are

Xcode 中BitCode是什么,怎样配置避免导入不支持BitCode的第三方库时工程编译报错?

Bitcode是什么? 查阅了一下官方文档,在 App Distribution Guide – App Thinning (iOS, watchOS) 一节中,找到了下面这样一个定义: Bitcode is an intermediate representation of a compiled program. Apps you upload to iTunes Connect that contain bitcode will be compiled and linked on the A

xcode编译时,有第三方库时,编译设置build active architecture only问题

本文转载至 http://blog.csdn.net/ysysbaobei/article/details/16371263 编译静态库 1.http://blog.csdn.net/dengdengxiximeimei/article/details/8845621 关于Build Active Architecture Only属性 2013-04-24 16:54 153人阅读 评论(0) 收藏 举报 这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architec

PHP-Mysqli扩展库的预编译

(1)预编译的好处 假如要执行100条类似的sql语句,每一次执行,在MySQL端都会进行一次编译,效率很低.提高效率的方法就是--减少编译的次数. 先制造一个sql语句的模板,在MySQL端预先编译好,之后每次只需要传递数据即可. 除了提高效率之外,预编译还可以防止sql注入. (2)dml语句的预编译 以向一个表中插入数据为例.表结构如下: +----------+----------------------------+| Field      | Type                

C语言的预编译,程序员必须懂的知识!【预编译指令】【预编译过程】

由“源代码”到“可执行文件”的过程包括四个步骤:预编译.编译.汇编.链接.所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译阶段仅仅对源代码的单词进行变换,而不是对程序中的变量.函数等. 预编译指令的基本知识不作详细介绍,只稍作汇总,重点是后面的我能想到的 使用时的注意事项. 1. 基本内容 预编译指令基本分类如下 类别 指令 预定义符号__FILE__.__LINE__.__DATE__.__TIME__.__STDC__宏#define文件包含#inclu

Python 安装第三方库,模块和包的安装方法

在python中已经内置了很多的有用的模块,只要安装了python的开发工具,这些模块就可以立刻使用了.而在实际python开发的过程中,除了python内置的模块外,python还有大量的第三方的库.模块和包. 常用的第三模块都会在python的PyPI - the Python Package Index上进行注册,只要找到对应模块的名字就可以进行安装了. 由于最近需要通过python来创建PDF文档,但是由于python的内置模块中相关的模块,所以需要使用第三方的reportlab库来创建

ubuntu 14 编译视频第三方库ijkplayer,可以在winows下使用

1.先安装相关环境,具体在这里http://blog.163.com/[email protected]/blog/static/98334653201612310647799/ 根据上面那个安装之后,会直接有个eclipse+sdk.sdk那个只有一个版本但是暂时不用去升级,不影响. 2.根据这个官方https://github.com/Bilibili/ijkplayer 的api要求去下载个ndk r10e 下载地址:http://blog.csdn.net/ultrapro/articl

ubuntu 14 编译视频第三方库ijkplayer,能够在winows下使用

1.先安装相关环境,详细在这里http://blog.163.com/[email protected]/blog/static/98334653201612310647799/ 依据上面那个安装之后,会直接有个eclipse+sdk.sdk那个仅仅有一个版本号可是临时不用去升级.不影响. 2.依据这个官方https://github.com/Bilibili/ijkplayer 的api要求去下载个ndk r10e 下载地址:http://blog.csdn.net/ultrapro/arti

预编译文件,预编译头文件认识

一.概念:1.预编译:就是编译器首先编译某个文件(称为预编译头文件),然后将这个编译结果保存起来,之后如果有其他源文件include了这个“预编译头文件”的时候,则自动从这个编译结果提取需要的信息进行编译.2.预编译结果文件(Precompiled header file):就是那个用来保存已经编译了的符号信息的文件(.PCH作为后缀)3.生成预编译结果文件(Create Precompiled header file):我们说源文件A通过文件B“生成预编译结果文件”是指编译A的时候将其中编译B