win7下使用cygwin编译VLC

前几天使用MinGW+msys编译,错误百出
通过几天调,改仍是没有成功,不是x264版本落后就是CACA版本落后
我猜测是msys的lib没有及时更新致使的,
 
在各位的建议下使用cygwin编译,因为本人么有看无言的视频 致使一些错误,另一个因为是windows7系统也出现了一些 别人没有遇到的错误
总结以下:
 
首先关于Cygwin 安装以及卸载:
cygwin安装使用了比较简便的方法是无言博客的已经下载好的包而后使用本地安装:
注意1:因为本人不仔细的缘由在安装的时候选择了default选项,致使第一次bootstrap错误:
$ ./bootstrap && dos2unix ./configure-vlc01.sh && ./con
+ ACLOCAL_ARGS='-I m4 '
+ test -d extras/contrib/bin
++ uname -s
+ test .CYGWIN_NT-6.1 = .Darwin
+ pkg-config --version
+ PKGCONFIG=no
+ export AUTOPOINT
+ test ''
+ AUTOPOINT=autopoint
+ autopoint --dry-run --force
+ AUTOPOINT= true
+ echo
+ set +x
generating modules/**/Makefile.am
.......................................................
+ echo
+ echo
+ cp -f INSTALL INSTALL.git
+ autoreconf --install --force --verbose -I m4
./bootstrap: line 110: autoreconf: command not found
 
因而重装Cygwin选择keep 按照无言博客的pic选项选择;
结果第二次bootstrap出现了折磨我一天的一个错误:
+ autoreconf --install --force --verbose -I m4
   8928 [main] perl 4540 C:\cygwin\bin\perl.exe: *** fatal error - unable to remap C:\cygwin\li
b\perl5\5.10\i686-cygwin\auto\File\Glob\Glob.dll to same address as parent(0x910000) != 0x9F000
0
      8 [main] perl 4476 fork: child 4540 - died waiting for dll loading, errno 11
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
而后是一大堆perl 没有fork成功的错误
ctrl+C 中止运行。找错尝试了如下几种方法:
1:卸载重装--这个过程也被折磨了:
卸载过程以下:
--千万不要用setup的install卸载 不然 会产生不能不能卸载的一个ID 我深受次苦
具体步骤以下:
1.删除安装用的临时文件夹(在cygwin里输入命令)(若是你没设能够跳过这步,能够去c盘看看有没有什么文件夹是在安装了cygwin以后产生的,通常那就是了)
$ rm -f /cygdrive/c/你的临时文件夹
2.中止cron service(没开启此服务的能够跳过,个人默认就没开启)
$ cygrunsrv --stop cron
$ cygrunsrv --remove cron
3.中止并删除inetd服务(个人默认也没开启)
$ net stop inetd
$/usr/sbin/inetd --remove-as-service
4.删除安装文件夹,默认是c:\cygwin
5.删除桌面上的icon,和开始菜单里的启动文件夹
6.删除注册表里的相关项
HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions
HKEY_CURRENT_USER\Software\Cygnus Solutions
7.删除环境变量(PATH, CYGWIN)
环境变量PATH里的c:\cygwin\bin; 还有名叫CYGWIN的变量
-------------------------
若是你在再次安装 第一次运行以后没有出现home 请将环境变量HOME删除
 
我卸载只用了 4 5 6 7 好OK
 安装的时候我选择所有安装 呵呵。。。。省事的方法 浪费空间
言归正传::::
为了解决fork perl5这个错误我费尽心机:
1.关闭杀毒软件--------问题依旧
2右键 管理员运行Cygwin--问题依然存在
3C盘空间不够(剩下2.7G)-Cygwin安装换到F盘(21G)---问题依然存在;;
 
再次Google 找到以下解决办法。顺利解决:
     1. shutdown all Cygwin processes and services
     2. start ash (do not use bash or rxvt)
     3. execute /bin/rebaseall (in the ash window)
 即:
1 关掉cygwin窗口
2运行-cmd 进去你安装Cygwin的路径下 执行/bin/ash
3而后$ /bin/rebaseall
 
终于解决fork问题:
下边说一下总体安装编译过程:
1.安装cygwin 注意:不要default  严格按照无言给出的pic选项选择
  懒的话就inshtall all
2.按照完成后运行一次 初次运行会建立../home/usrname/文件夹
 
3下载源码以及第三方库 这里省事了 我没用去匹配直接用了
高人提示的去下载:
vlc-0.9.9a版本匹配的第三方库——contrib-20090329-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2
vlc-0.9.9a.tar.bz2contrib-20090329-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2   w32api-3.11-1.tar.bz2qt4-4.4.1-win32-bin.tar.bz2拷贝到/home/username/下面(username为登录的用户目录),
 
运行如下命令解压:
tar xjvf contrib-20090329-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2 -C /
tar xjvf vlc-0.9.9a.tar.bz2
tar xjvf w32api-3.11-1.tar.bz2 -C /
tar xjvf qt4-4.4.1-win32-bin.tar.bz2
必须作一点点清理工做:
rm -rf /usr/win32/bin/moc
rm -rf /usr/win32/bin/rcc
rm -rf /usr/win32/bin/uic
 
这里注意:若是手动删除 只删除moc rcc uic文件 保留其exe
4 ./bootstrap
 
执行如下
PATH=/usr/win32/bin:$PATH \
PKG_CONFIG_LIBDIR=/usr/win32/lib/pkgconfig \
CPPFLAGS="-I/usr/win32/include -I/usr/win32/include/ebml" \
LDFLAGS=-L/usr/win32/lib \
CC="gcc -mno-cygwin" CXX="g++ -mno-cygwin" \
./configure \
         --host=i686-pc-mingw32 \
         --enable-nls --enable-sdl --with-sdl-config-path=/usr/win32/bin \
         --enable-avcodec --enable-avformat --enable-swscale \
         --enable-faad --enable-flac --enable-theora \
         --enable-live555 --with-live555-tree=/usr/win32/live.com \
         --enable-caca --with-caca-config-path=/usr/win32/bin \
         --with-xml2-config-path=/usr/win32/bin \
         --with-dvdnav-config-path=/usr/win32/bin \
         --disable-cddax --disable-vcdx --enable-goom \
         --enable-twolame --enable-dvdread \
         --enable-debug    --enable-dca \
         --disable-mkv --disable-taglib \
         --disable-zvbi
 
 
保存为 configure-vlc01.sh
 
而后将Makefile.am第694行
修改
cp "$(top_srcdir)/extras/package/win32/vlc.exe.manifest" "$(win32_destdir)/"
#  cp "$(top_srcdir)/extras/package/win32/vlc.exe.manifest" "$(win32_destdir)/"
 
Makefile.am第735行
修改
cp $(top_srcdir)/projects/activex/axvlc.dll.manifest $(win32_destdir)/activex/
#  cp $(top_srcdir)/projects/activex/axvlc.dll.manifest $(win32_destdir)/activex/
 
而后make 好
最后执行 make package-win32-base
搞定!
记如下我编译过程出现的问题和解决办法:
 
1错误一
make[5]: Entering directory `/home/kathy/vlc-0.9.9a/modules/gui/qt4'
/usr/win32/bin/moc -DHAVE_CONFIG_H -I../../../include -I../../../include -I/usr/win32/include -
I/usr/win32/include/ebml -DSYS_MINGW32 -I../../.. `top_builddir= "../../.." ../../../vlc-config
--cppflags plugin qt4` -o main_interface.moc.cpp main_interface.hpp
/usr/win32/bin/moc: /usr/win32/bin/moc: cannot execute binary file
make[5]: *** [main_interface.moc.cpp] Error 126
make[5]: Leaving directory `/home/kathy/vlc-0.9.9a/modules/gui/qt4'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/home/kathy/vlc-0.9.9a/modules/gui'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/home/kathy/vlc-0.9.9a/modules/gui'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/kathy/vlc-0.9.9a/modules'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/kathy/vlc-0.9.9a'
make: *** [all] Error 2
 
可能出现的缘由:
1 没用下载w32api-3.11-1.tar.bz2和qt4-4.4.1-win32-bini.tar.bz2
2下载了也解压了 可是没有删除moc rcc uic等三个文件
 
错误二:
出现诸多的
 
/usr/win32/lib/libzvbi.a(packet.o):packet.c:(.text+0x6dc0): undefined reference to `__imp__pthread_mutex_lock'
/usr/win32/lib/libzvbi.a(packet.o):packet.c:(.text+0x6dd3): undefined reference to `__imp__pthread_mutex_unlock'
/usr/win32/lib/libzvbi.a(caption.o):caption.c:(.text+0x9c): undefined reference to `__imp__pthread_mutex_lock'
/usr/win32/lib/libzvbi.a(caption.o):caption.c:(.text+0x10a): undefined reference to `__imp__pthread_mutex_unlock'
/usr/win32/lib/libzvbi.a(caption.o):caption.c:(.text+0x171): undefined reference to `__imp__pthread_mutex_destroy'
/usr/win32/lib/libzvbi.a(caption.o):caption.c:(.text+0x54b): undefined reference to `__imp__pthread_mutex_init'
/usr/win32/lib/libzvbi.a(caption.o):caption.c:(.text+0xd58): undefined reference to `__imp__pthread_mutex_unlock'
 没有定义
请在configure-vlc10.sh里面添加
         --disable-zvbi
 
 
 
 
 
遇到的问题N多呵呵 先这些吧
很感谢