1. 安装msys

msys(Minimal GNU system on Windows),是一个小型的GNU环境,包括基本的bash,make等等。与Cygwin差不多吧, 我也没用过cygwin

下载地址: https://msys2.github.io/

6.在开始菜单中运行 VS2015 x64 Native Tools Command Prompt
7.在控制台中运行:
d:\msys64\msys2_shell.cmd -mingw64 -msys -use-full-path

双击mingw64_shell.bat, 进入shell界面。(新的版本也可能没有这个文件了, 自己找找类似的吧).  使用uname -a查看系统信息:

$ uname -a
MINGW64_NT-6.1 Galaxy 2.3.0(0.290/5/3) 2015-09-15 09:39 x86_64 Msys

使用pacman更新系统

pacman –Suy

这个命令会同步数据源, 安装最新的msys, 并且安装mingw32和mingw64工具。pacman的使用说明,可以在下面这个网址上查到

https://www.archlinux.org/pacman/pacman.8.html

再次执行uname-a,可以看到系统已经升级到2.5.1了

$ uname -a
MSYS_NT-6.1 Galaxy 2.5.1(0.297/5/3) 2016-05-16 10:51 x86_64 Msys

2. 编译x264

(5)解决libx264所需的依赖库,譬如缺少nasm

pacman -S nasm

将x264拷贝到msys64的home目录下, 执行配置脚本


./configure --host=mingw64 --enable-static --prefix=/home/x264-bin

可能会提示下面这样的错误,意思是config.guess和config.sub这两个脚本太旧了,需要重新下载它们

./config.guess: unable to guess system typeThis script, last modified 2012-09-25, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts fromhttp://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
andhttp://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD

按照提示,打开这两个网页,网页的内容分别复制到config.gess和config.sub, 然后再次执行configure命令。这次应该可以成功了,显示如下信息

platform:      X86_64
byte order:    little-endian
system:        WINDOWS
cli:           yes
libx264:       internal
shared:        no
static:        yes
asm:           yes
interlaced:    yes
avs:           avisynth
lavf:          no
ffms:          no
mp4:           no
gpl:           yes
thread:        posix
opencl:        yes
filters:       crop select_every
debug:         no
gprof:         no
strip:         no
PIC:           no
bit depth:     8
chroma format: allYou can run 'make' or 'make fprofiled' now.

执行make

$ make

最终可能编译不过,出现如下的错误:

libx264.a(cpu.o):cpu.c:(.text+0x631):对‘pthread_num_processors_np’未定义的引用
libx264.a(cpu.o):cpu.c:(.text+0x631): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `pthread_num_processors_np'

msys2自带的libpthread.a中没有pthread_num_processors_np这个接口, 所以链接时会提示未定义的符号,解决的方法有两个:

方法1:  禁用thread


./configure --host=mingw64 --enable-static --disable-thread --prefix=/home/x264-bin

方法2: 使用pthread-win32代替系统的libpthread.a。pthreads-win32的官网为

https://sourceware.org/pthreads-win32/

下载最近发布的版本

ftp://sourceware.org/pub/pthreads-win32/dll-latest

下载dll-latest/lib/x64/libpthreadGC2.a,  这是gcc使用的版本

删除msys64/usr/lib/libpthread.a,  使用libpthreadGC2.a来代替,之后应该就可以编译通过

后来又报错:

avisynth_c.h:825:3: error: unknown type name ‘HMODULE’

解决方法:--disable-avs

./configure --host=mingw64 --enable-static --disable-thread --disable-avs --prefix=/home/x264-bin

static只会产生.a文件,不能生产lib和dll动态库。

./configure --host=mingw64 --enable-shared --disable-thread --disable-avs --prefix=/home/x264-bin

生成libx264.lib用:

./configure --host=x86_64-w64-mingw32 --enable-shared --disable-thread --disable-avs --extra-ldflags=-Wl,--output-def=libx264.def

--enable-win32thread

make

生成“libx264.dll”和“libx264.def”文件之后, 使用VC自带的lib生成工具“LIB”,生成“libx264.lib”文件。使用“Visual Studio command prompt”,切换至x264源代码目录,输入以下命令:

若要生成32位lib文件则输入如下命令:

lib /machine:i386 /def:libx264.def

若要生成64位lib文件则输入如下命令:

lib /machine:X64 /def:libx264.def

即可生成libx264.lib库文件。

正常别人编译的结果:

3.编译ffmpeg

下载最新版本的ffmpeg, (我的版本是2.6.3),  在msys上安装yasm

pacman -S yasm

执行configure

./configure --toolchain=msvc --enable-shared --disable-static --enable-encoder=libx264 --enable-encoder=mjpeg --enable-encoder=mpeg4 --enable-gpl --disable-debug \

--enable-libx264 --extra-cflags=-I/home/x264-bin/include --extra-ldflags=-LIBPATH:/home/x264-bin/lib --prefix=./out/

现在用的这个:

./configure --toolchain=msvc --enable-shared --enable-static --enable-encoder=libx264 --enable-encoder=mjpeg --enable-encoder=mpeg4 --enable-x86asm --enable-gpl --disable-debug --enable-libx264 --extra-cflags=-I/usr/local/include --extra-ldflags=-LIBPATH:/usr/local/lib --prefix=./out/

make

make install

./configure --target-os=win64 \--arch=x86_64 \--enable-static \--enable-memalign-hack \--enable-small \--enable-version3 \--enable-gpl \--enable-nonfree \--disable-stripping \--disable-encoders \--disable-decoders \--enable-decoder=h264 \--enable-encoder=libx264 \--enable-encoder=mjpeg \--enable-encoder=mpeg4 \--prefix=./lib \--enable-libx264 \--extra-cflags="-I/home/x264-bin/include" \--extra-ldflags="-L/home/x264-bin/lib"

windows msys编译64位x264和ffmpeg相关推荐

  1. windows下编译64位x264

    一.安装MSYS2环境 1.首先去MSYS2官网(链接)安装包,我的电脑是64位选择x86_64版本 2.下载后,点击安装,默认就可以 3.根据提示,将会直接打开窗口,如果不小心关闭,则转到安装目录下 ...

  2. windows下编译64位程序时没有没_WIN32定义

    _WIN32定义的初衷是为了区分16位和32位程序,但是目前很多项目的代码都是使用_WIN32来判定是否是windows平台,所以目前在windows平台下编译32位和64位程序时,编译器都会预定义了 ...

  3. windows 下编译64位的 Boost 1. 61. 0

    一直以来都是在Win32环境下Build和使用boost,但现在基本上每天都在64位Win7下工作,所以很有必要把这几天的经验总结下来. 1. 下载并解压boost 1.61.0 压缩包 2. 解压并 ...

  4. Window下编译 64位ffmpeg 引入libx264及libmp3lame编码库

    好记性不如烂笔头,每次编译总要有些时间折腾,记录下编译过程,方便后来者. 本文 介绍windows下编译64位Ffmpeg库 (版本V4.02)如何引入libx264及libmp3lame(编码mp3 ...

  5. 使用MSYS2编译64位gvim

    1. 下载安装MSYS2 在https://msys2.github.io/下载MSYS2,推荐下载x86-64版,此版本内置了MinGW32与MinGW64 安装后首先更新MSYS2系统,顺序执行下 ...

  6. Windows7_x64下编译64位ffmpeg

    一点心青的文章指导得非常详细,本应是非常顺利的.但我仍然为编译64位ffmpeg耽误了很久,现在总结一下经验教训: 1. 经验:在编译SDL的时候,我直接使用了1.2.5的版本,省去了很多麻烦: 2. ...

  7. Windows下VS2015 MPI编译64位Boost1.64

    Windows下VS2015编译64位Boost1.64 2017年12月08日 15:51:48 阅读数:346 参考原帖:https://gist.github.com/UnaNancyOwen/ ...

  8. linux cmake 编译64位,cmake编译win下64位obs

    obs是一款开源编码推流工具,简单易用,非常流行. 一次项目中,发现本台式机I3处理器下32位obs推流CPU使用率100%.而使用的第三方设备在64位下,性能较好. 所以需要编译64位obs并且编译 ...

  9. 为树莓派3B+编译 64位UEFI 固件

    树莓派(RaspBerry) 是基于Arm架构的单板机,凭借着低廉的价格,丰富的社区资源风靡全球. 在Iot 大行其道的今天,微软也在树莓派上面开发了windows iot 的操作系统.为支持Wind ...

最新文章

  1. 分解原理_基于矩阵分解原理的推荐系统
  2. Springboot mybatis逆向工程org.springframework.beans.factory.BeanCreationException: Error creating bean错误
  3. 我们又来送书啦!这一次,用做业务的思维讲推荐系统 | 文末福利
  4. PHP页面编码声明与用header或meta实现PHP页面编码的区别
  5. cus.crm.notes.Component.extend(cus.crm.notes.ext.Component, {
  6. IDEA常用设置【很实用】
  7. 【JavaScript】Canvas绘图整理
  8. 江苏大学考研885程序设计 - 谭浩强课后习题
  9. form中的get和post方法
  10. android 高德地图动画,点动态样式-基本功能-示例中心-Loca API 示例 | 高德地图API...
  11. Excel宏去除汉字
  12. python flask接收图像
  13. css设置table阴影浮动效果
  14. 手机测试的主要测试内容
  15. 链表初始化typedef struct LNode{}LNode,*linklist的理解
  16. android 微信照片,手机微信图片怎么恢复 答案让人难以置信
  17. APP开发的七大阶段,你了解多少?
  18. 由连连看游戏作弊器想到的
  19. python多个文件打包成exe_多个py文件生成一个可运行exe文件
  20. WineBottler for Mac (Mac运行exe程序) 使用教程

热门文章

  1. shell shock 执行漏洞分析
  2. 校园导游系统c语言代码,GitHub - iamywang/Campus-Guide-System: 校园导游系统
  3. java swing控件大全_java swing 组件大全(新手快进)
  4. android_通过高级应用程序开发策略在Android中进行用户参与
  5. python声明_在Python中什么是全局声明?
  6. MySQL约束不起作用怎么解决_MySQL中的CHECK约束不起作用
  7. 用python将xml文件转换为txt文件_python代码xml转txt实例
  8. 基本url是由协议服务器,http协议基础之URL
  9. 周末了,分享个休闲软件!你懂得!
  10. 居然有人撸了一个网易云音乐云村,高手在民间!