感谢vlc研究群的gg-Ak47童鞋的帮忙,虽然很据他给我讲的我没有搞定。
Contrib库都是官网提供的,如果有些代码调用的第三方库,我们调试修改起来就很麻烦。Jeremiah最近再调试vlc的rtsp方面的东西,编译了live555的库,替换掉官网提供的Contrib里面关于live方面的库,vlc编译通过,实现了对第三方库的修改。在此共享,提供一个思路,其他的库,以此类推。
测试环境:
1. cygwin-new(20081208)
2. vlc-0.9.9a
3. contrib-20090118-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2
测试环境:
1. cygwin-new(20081208)
2. vlc-0.9.9a
3. contrib-20090118-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2
(
在我的公共邮箱提供了下载,具体下载方式为:
1). 登录http://mail.qq.com
2). 用户名:jeremiah_vlc
3). 密码:发邮件给我(jeremiah.vlc@gmail.com),我会告知。
4). 在“我的文件夹”的“Jeremiah_VLC相关资源”有所有资料的超大附件连接。
1). 登录http://mail.qq.com
2). 用户名:jeremiah_vlc
3). 密码:发邮件给我(jeremiah.vlc@gmail.com),我会告知。
4). 在“我的文件夹”的“Jeremiah_VLC相关资源”有所有资料的超大附件连接。
)
第三方库的版本是非常重要的,在此Jeremiah提供一个方法去找所需要库的版本。
打开vlc源码下面的extras/contrib/src/会有一个MakeFile及packages.mak,这两个文件本来是给Linux及MacOS下载编译第三方库的。根据这两个文件就应该知道第三方库提供的下载地址及如果编译。
但是live555的库比较特殊,搜索“live“,发现永远都是live-latest.tar.gz。这个是根据版本不同而随时改变的。Jeremiah也是试验多次,终于找到了一个比较适合的版本。
第三方库的版本是非常重要的,在此Jeremiah提供一个方法去找所需要库的版本。
打开vlc源码下面的extras/contrib/src/会有一个MakeFile及packages.mak,这两个文件本来是给Linux及MacOS下载编译第三方库的。根据这两个文件就应该知道第三方库提供的下载地址及如果编译。
但是live555的库比较特殊,搜索“live“,发现永远都是live-latest.tar.gz。这个是根据版本不同而随时改变的。Jeremiah也是试验多次,终于找到了一个比较适合的版本。
下载地址:http://ftp.gamma.ru/FreeBSD/ports/local-distfiles/nork/live.2009.02.23.tar.gz
这个ftp里面还有其他版本的live。由于live官方不提供旧版本下载,所以,旧版的live只能通过其他的非官方渠道获得。
1. 解压live.2009.02.23.tar.gz到~下
2. copy补丁到~下。注意目录层级
cp ~/vlc-0.9.9a/extras/contrib/src/Patches/live-noapps.patch ~/vlc-0.9.9a/extras/contrib/src/Patches/live-uselocale.patch ~
3. 打补丁
patch -p0 < live-noapps.patch
patch -p0 < live-uselocale.patch
patch -p0 < live-uselocale.patch
4. 进入到live里面修改config.mingw
cd live
vi config.mingw
vi config.mingw
修改如下:
将C_COMPILER从$(CC)改成gcc -mno-cygwin
将CPLUSPLUS_COMPILER从$(CXX)改成g++ -mno-cygwin
将LIBRARY_LINK从$(LD) -o改成$(LD) -lws2_32 -o
将CPLUSPLUS_COMPILER从$(CXX)改成g++ -mno-cygwin
将LIBRARY_LINK从$(LD) -o改成$(LD) -lws2_32 -o
5. 编译live
./genMakefiles mingw
make
make
不报错就说明编译的很OKAY。
6. copy库到/usr/win32
将下列脚本保存为cp.sh
cp BasicUsageEnvironment/libBasicUsageEnvironment.a /usr/win32/live.com/BasicUsageEnvironment/
cp BasicUsageEnvironment/libBasicUsageEnvironment.a /usr/win32/lib/
cp UsageEnvironment/libUsageEnvironment.a /usr/win32/live.com/UsageEnvironment/
cp UsageEnvironment/libUsageEnvironment.a /usr/win32/lib
cp groupsock/libgroupsock.a /usr/win32/live.com/groupsock/
cp groupsock/libgroupsock.a /usr/win32/lib/
cp liveMedia/libliveMedia.a /usr/win32/live.com/liveMedia/
cp liveMedia/libliveMedia.a /usr/win32/lib
cp BasicUsageEnvironment/libBasicUsageEnvironment.a /usr/win32/lib/
cp UsageEnvironment/libUsageEnvironment.a /usr/win32/live.com/UsageEnvironment/
cp UsageEnvironment/libUsageEnvironment.a /usr/win32/lib
cp groupsock/libgroupsock.a /usr/win32/live.com/groupsock/
cp groupsock/libgroupsock.a /usr/win32/lib/
cp liveMedia/libliveMedia.a /usr/win32/live.com/liveMedia/
cp liveMedia/libliveMedia.a /usr/win32/lib
执行
sh cp.sh
到此库已经替换成功了,以后修改了live的源码就可以重新make,重新cp。
7. vlc重新关联live的库
如果你想make clean了再make,我没意见。这里提供一个简单的方法。
cd ~/vlc-0.9.9a/modules/demux
rm liblive555_plugin_la-live555.lo
make
rm liblive555_plugin_la-live555.lo
make