win10 编译FFmpeg + x264
背景
最近在学习pjsip2,想开发一个自己的软电话。看了官方文档,要求挺多的,其中一项表示需要ffmpeg2.8版本。其他方面不谈,就说在自己电脑上折腾ffmpeg2.8版本编译的问题,历时两周多,踩的坑不计其数,很多都没有记录,本文也不细表。
本机环境信息
操作系统版本不同,在编译过程中遇到的问题不同,所以环境信息要说明一下:
操作系统: Windows 10 专业工作站版
版本号: 21H2
操作系统内核版本:19044.1766
64位操作系统,基于x64处理器
安装准备软件
下载MSYS2,https://www.msys2.org/
傻瓜式安装到默认文件夹C:\msys64
添加环境变量C:\msys64\mingw64\bin
添加msys64环境变量
双击mingw64.exe打开mingw64,安装软件
pacman -Syu
pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-SDL2
pacman -S mingw-w64-x86_64-cmake
pacman -S yasm nasm gcc
pacman -S base-devel
pacman -S make
pacman -S diffutils
可能有些重复安装,但没办法,在编译过程中也是拼拼凑凑才整理出来的.
编译 x264
下载稳定版x264,x264还是比较好编译的,按照这个命令应该不会有问题
https://code.videolan.org/videolan/x264/-/archive/stable/x264-stable.zip
放到/home目录下
./configure --enable-static --enable-shared --enable-pic --disable-thread
make -j8
make install
问题: msys2自带的libpthread.a中没有pthread_num_processors_np这个接口, 所以链接时会提示未定义的符号.解决方案是 增加–disable-thread
编译ffmpeg-n2.8.20
拷贝usr/local/lib目录下的 libx264.a、libx264.dll.a到C:\msys64\usr\lib目录,否则会报错找不到ERROR: libx264 not found
错误信息:
/usr/lib/gcc/x86_64-pc-msys/11.3.0/../../../../x86_64-pc-msys/bin/ld: cannot find -lx264
collect2: error: ld returned 1 exit status
ERROR: libx264 not found
configure 时需要指定目标系统和架构,否则会报Unknown mingw64_nt-10.0-xxx
./configure --target-os=mingw32 --arch=x86_64 --enable-shared --enable-static --enable-memalign-hack --enable-gpl --enable-libx264 --extra-cflags="-I/usr/local/includ" --extra-ldflags="-I/usr/local/lib/"
make -j8
make install