win7下使用cygwin编译VLC
http://kathy.blog.51cto.com/1168050/295460

2010-04-15 14:54:01

标签:编译 休闲 VLC 职场 win7
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://kathy.blog.51cto.com/1168050/295460
前几天使用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.bz2和contrib-20090329-win32-bin-gcc-4.2.1-sjlj-runtime-3.13-only.tar.bz2   w32api-3.11-1.tar.bz2和qt4-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多呵呵 先这些吧
很感谢
 
 

win7下使用cygwin编译VLC的更多相关文章

  1. Win7 下用 VS2015 编译最新 openssl(1.0.2j)包含32、64位debug和release版本的dll、lib(8个版本)

    Win7 64位系统下通过VS2015编译好的最新的OpenSSL(1.0.2j)所有八个版本的链接库, 包含以下八个版本: 1.32位.debug版LIB: 2.32位.release版LIB: 3 ...

  2. win7 下使用cygwin

    http://cygwin.com/index.html      还是看官网! 很多用windows的朋友不习惯于用linux的开发环境.虽然很乐意尝试一下,但是往往怕 linux系统打乱了自己的正 ...

  3. Windows7下采用cygwin编译安装swoole扩展

    常用命令 查看cygwin当前的版本: cygcheck -c cygwin 检查所有安装软件的版本号:cygcheck -c 查看某一个软件安装的版本:cygcheck -c 软件名称 查看本地已经 ...

  4. 64位Win7下用VS2010编译OpenSSL

    http://blog.csdn.net/henter/article/details/8364532 首先要说明,如果不想自己编译OpenSSL,可以到 http://slproweb.com/pr ...

  5. 在win7下配置java编译环境变量

    今天刚接触java编程,环境的配置方法比较复杂.好记性不如烂笔头,发个文章记录一下吧. win7系统 Jdk版本1.6 用鼠标右击“我的电脑”->属性->高级->环境变量系统变量-& ...

  6. ffmpeg2.2在ubuntu下使用NDK编译——并在android工程下测试使用

    作者:wainiwann 出处:http://www.cnblogs.com/wainiwann/ 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...

  7. windows下使用cmake编译zlib与libpng libjpeg

    win7下使用VS2010编译jpeglib 1.下载源代码下载地址:http://www.ijg.org/files/,     选择最新版本的windows版本压缩包,进行下载.     jpeg ...

  8. ubuntu下编译VLC

    ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...

  9. Win7下VS2008编译QtiPlot

    Win7下VS2008编译QtiPlot By wangsh 2011-11-25 QtiPlot 是一款开源免费的科学绘图软件,可运行在多个平台(windows.Linux等)中,从功能上讲,Qti ...

随机推荐

  1. UI自动化通过文字、父子元素,兄弟元素定位

    在百度首页,通过文字,父子元素,兄弟元素进行定位 一.文字定位: 通过界面上的文字进行定位,注意如果同一个页面上存在多个同样的文字的情况,返回的值会是多个,建议只存在一个情况下才用这方法. 如:定位百 ...

  2. [Linux] 014 帮助命令

    1. 帮助命令:man 命令名称:man 命令所在路径:/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信息 范例: 查看 ls 命令的帮助信息 $ man ...

  3. hive Hsql

    show databases; use flume; show tables; desc flume; alter table table_name add columns(dt string); a ...

  4. MIT 6.824学习笔记1 MapReduce

    本节内容:Lect 1 MapReduce框架的执行过程: master分发任务,把map任务和reduce任务分发下去 map worker读取输入,进行map计算写入本地临时文件 map任务完成通 ...

  5. Metasploitable2使用指南

    Metasploitable2使用指南 Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击.版本2已经可以下载,并且比上一个版本包 ...

  6. Python之反向迭代

    需求:得到反方向迭代一个序列解决:使用内置的 reversed() 函数 a = [1, 2, 3, 4] for x in reversed(a): print(x) # 4 3 2 1 反向迭代仅 ...

  7. Java实现ArrayList

    说明都在注释: package adt.array; import java.util.Iterator; import java.util.NoSuchElementException; /** * ...

  8. AGC003[BCDEF]题解

    2018-12-28 有点累EF明天再写叭=v= 2018-12-29 update EF B - Simplified mahjong 可以注意到 一段连续的非0序列都可以凑出 就是显然%2=0的可 ...

  9. 3.1.2 Socket网络通信开发

    Socket语法 Python中,我们用Socket()函数来创建套接字,语法如下: socket.socket([family[, type[, proto]]]) 参数 family:套接字家族可 ...

  10. Spring----事件(Application Event)

    1.概述 1.1.Spring的事件  为Bean与Bean之间的消息通信提供了支持: 当一个Bean处理完一个任务后,希望另一个Bean知道并能做出相应的处理,这时我们需要   让另一个Bean  ...