为iOS6.0 ARMv7处理器构建FFMPEG库

时间:2012-10-25 03:24:49

标签: iphone gcc ffmpeg ios6 armv7

警告:

我刚刚被其他用户告知,有一些法律问题围绕使用FFMPEG for iOS,请在此处留下链接http://multinc.com/2009/08/24/compatibility-between-the-iphone-app-store-and-the-lgpl/

当我第一次感到慌乱时,我写了一些问题。现在,我可以在休息一下后更清楚。

  

编辑:了解到你必须为ARMv7,ARMv7s和iOS6.0构建

我正在尝试在XCode 4.5.1项目中使用FFMPEG库。我正在尝试为ARMv7构建它。我正在寻找的是确切的过程和一些解释。我知道这不是一个记录良好的问题。但我知道其他人和我有同样的问题。

我能做些什么。

我已经能够构建用于测试的库。

1)我已经能够克隆ffmpeg了。对于初学者,这将通过使用ffmpeg源创建目录来开始。 (感谢那些写作的人)

  

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

2)我已经能够编写一个没有任何错误的配置文件。我们稍后会回到这一部分。这是我附加到./configure

的命令
  

./配置   --disable-DOC    - 禁用的ffmpeg    - 禁用ffplay   --disable-ffserver的   --enable-交叉编译   --arch =臂   --target-OS =达尔文   --CC = /应用/ Xcode.app /内容/开发商/平台/ iPhoneOS.platform /开发人员的/ usr / LLVM-GCC-4.2 / bin中/ ARM-苹果darwin10-LLVM-GCC-4.2

     

- as ='gas-preprocessor / gas-preprocessor.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/arm-apple- darwin10-LLVM-GCC-4.2'

     

- SYSROOT = /应用/ xcode.app /内容/开发商/平台/ iPhoneOS.platform /开发商/软件开发工具包/ iPhoneOS6.0.sdk

     

- CPU = Cortex-A8的   --extra-ldflags =' - arch = armv7 -isysroot /applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk'   --enable-pic --disable-bzlib --disable-gpl --disable-shared --enable-static --disable-mmx --disable-debug --disable-neon --extra-cflags =' - pipe - Os -gdwarf-2 -isysroot /applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk   -m $ {thumb_opt:-no-thumb} -mthumb-interwork'

这些是需要注意的事项。

  • 我必须下载(https://github.com/yuvi/gas-preprocessor)将文件gas-preprocessor.pl复制到/ usr / local / bin。设置读写权限(777)
  • 确保我使用正确的GCC编译器:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/arm-apple-darwin10-llvm -GCC-4.2
  • 确保我使用的是正确的SDK:/applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk
  • - extra-cflags =“ - arch armv7”导致:错误:无法识别的命令行选项“-arch”

这就是问题所在。

我可以像这样包含库

  

libavcodec的/中avcodec.h

但是当我开始编写编码器时。我收到了这个警告,还有无数的错误。

  

忽略文件/Users/Jimmy/Development/source.ffmpeg/Library/libavutil.a,文件是为归档而构建的,而不是被链接的体系结构(armv7s):/ Users / Jimmy / Development / sources.ffmpeg / Library /libavutil.a

这意味着我没有构建正确的二进制文件。

我正在寻找的是之前完成过的人,让我们所有人都参与构建针对iOS6.0和ARMv7的FFMPEG以及大部分需要注意的事项。非常感谢。

1 个答案:

答案 0 :(得分:12)

以下是我在iOS 6上进行交叉编译FFmpeg的配置工作,拱门为ARMv7

注意:您必须在/usr/local/bin/内{{}}},在您的bin目录中有gas-preprocessor.pl之前请不要继续

  • gas-preprocessor.pl

  • 下载FFmpeg 1.0“Angel”
  • 解压缩并将其放置在某个位置,即Desktop文件夹

  • 打开终端并浏览到unzipped FFmpeg folder

  • 复制并粘贴以下命令,(耐心需要一段时间

  

./ configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-cross-compile --arch = arm --target-os = darwin --cc = / Applications / Xcode.app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / usr / bin / gcc --as ='gas-preprocessor / gas-preprocessor.pl /Applications/Xcode.app/Contents/Developer/Platforms/ iPhoneOS.platform / Developer / usr / bin / gcc' - sysroot = / Applications / Xcode.app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / SDKs / iPhoneOS6.0.sdk --cpu = cortex-a8 - -extra-cflags =' - arch armv7'-extra-ldflags =' - arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk' - -enable-pic --enable-decoder = rawvideo --disable-asm

  • 现在在终端make上输入以下命令(再等一会儿

  • 现在完成后输入终端sudo make install再次等待

  • 转到/usr/local/lib查找新近出炉的armv7图书馆

  • 享受!

亚历


添加了对armv7s的支持

这个armv7s配置是完全未经测试的,我真的不知道这是否可行,我没有iPhone 5所以我们需要有人来测试最终的armv7s库

  

./ configure --disable-doc --disable-ffmpeg --disable-ffplay   --disable-ffserver --enable-cross-compile --arch = arm --target-os = darwin --cc = / Applications / Xcode.app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / usr / bin / GCC   --as ='gas-preprocessor / gas-preprocessor.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc'   --sysroot = /应用/ Xcode.app /内容/开发商/平台/ iPhoneOS.platform /开发商/软件开发工具包/ iPhoneOS6.0.sdk   --cpu = cortex-a8 --extra-cflags =' - arch armv7s' - extra-ldflags =' - arch armv7s -isysroot   /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk”   --enable-pic --enable-decoder = rawvideo --disable-asm