【问题标题】:Building FFMPEG library for iOS6.0 ARMv7 Processor为 iOS6.0 ARMv7 处理器构建 FFMPEG 库
【发布时间】:2013-08-15 15:41:38
【问题描述】:

警告:

我刚从另一位用户那里得知,在 iOS 上使用 FFMPEG 存在一些法律问题,请在此处留下链接 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 的命令

./配置 --禁用文档 --禁用-ffmpeg --禁用-ffplay --disable-ffserver --启用交叉编译 --arch=手臂 --target-os=darwin --cc=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/arm-apple-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=/applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/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/source.ffmpeg/Library /libavutil.a

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

我要找的是以前做过的人,他带领我们所有人完成为 iOS6.0 和 ARMv7 构建 FFMPEG 的过程以及大部分需要注意的事情。非常感谢。

【问题讨论】:

  • 那么,config.log 说了什么?你能找出失败的程序吗?如果您看不到问题,请将 config.log 发布到 pastebin 或其他东西上。
  • 错误:无法识别的命令行选项“-arch”。但是谢谢你,我应该阅读更多内容 - 我的挫败感正在开始......有时会扰乱我的推理
  • 您最好发布一个实际答案,而不是将答案放在您的问题中。下面有一个按钮,也许你可以这样做。
  • 确实有道理,如果我能在一秒钟内确认它有效,我会这样做。
  • 查看此答案以获取有关法律问题 WRT 的链接,包括 iOS 应用程序中的 ffmpeg:stackoverflow.com/questions/15832754/…

标签: iphone gcc ffmpeg ios6 armv7


【解决方案1】:

这是我在 iOS 6 上交叉编译 FFmpeg 的工作配置,拱门是 ARMv7

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

  • here下载FFmpeg 1.0“天使”

  • 解压缩并将其放在某个位置,即您的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=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/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

【讨论】:

  • 哇,谢谢你太棒了!我试试看,是不是也支持ARMv7s?
  • 不,只是 armv7,如果 armv7s 可以工作但会编辑问题,我想知道
  • 顺便说一句 @Jimmy 你的 Mean JS Shell 太棒了:)
  • 嗨 dalexsoto。谢谢你的回答,对我帮助很大!我需要编译两个库吗?一个用于 Armv7,另一个用于 Armv7s?除了通常的 Armv6?再次感谢!
  • @Winston 是的,如果您想支持较新的设备处理器,您需要构建一个胖库,我的意思是创建 ARMv6、ARMv7 和 ARMv7,然后使用 lipo 组合它们
猜你喜欢
  • 2014-05-12
  • 1970-01-01
  • 2018-11-19
  • 1970-01-01
  • 2018-01-26
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多