zoukankan      html  css  js  c++  java
  • 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.*"

  • 相关阅读:
    Intent.ACTION_TIME_TICK 广播
    Android ContentObserver
    android:duplicateParentState属性解释
    Android CursorAdapter
    android AndroidManifest.xml 多个android.intent.action.MAIN (
    PreferenceActivity详解
    WORD和WPS中英文混合的内容间距离很大怎么办?
    Android 屏幕适配
    OC第四课
    PL/SQL联系oracle成功可以sql解决的办法是检查表的名称无法显示
  • 原文地址:https://www.cnblogs.com/caibirdy1985/p/4329596.html
Copyright © 2011-2022 走看看