试图为iPhone编译x264和ffmpeg - “缺少文件中所需的架构臂”

时间:2010-04-09 22:00:55

标签: iphone gcc ffmpeg x264

我正在尝试编译x264以用于iPhone应用程序。我看到有关如何编译ffmpeg以便在平台上使用的说明:http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-October/076618.html,但我似乎无法找到任何完整的用于在iPhone上编译x264的内容。我发现这个源代码树:http://gitorious.org/x264-arm似乎支持ARM平台。

这是我的配置行:

./configure --cross-prefix=/usr/bin/ --host=arm-apple-darwin10 --extra-cflags="-B /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk/usr/lib/ -I /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk/usr/lib/"

...和configure内部我正在使用gas-preprocessor脚本(上面的第一个链接)作为我的汇编程序:

gas-preprocessor.pl gcc

当我开始编译时,它会稍微分开,然后它会吐出这些警告和一大堆未定义的符号:

ld: warning: option -s is obsolete and being ignored
ld: warning: -force_cpusubtype_ALL will become unsupported for ARM architectures
ld: warning: in /usr/lib/crt1.o, missing required architecture arm in file
ld: warning: in /usr/X11R6/lib/libX11.dylib, missing required architecture arm in file
ld: warning: in /usr/lib/libm.dylib, missing required architecture arm in file
ld: warning: in /usr/lib/libpthread.dylib, missing required architecture arm in file
ld: warning: in /usr/lib/libgcc_s.1.dylib, missing required architecture arm in file
ld: warning: in /usr/lib/libSystem.dylib, missing required architecture arm in file
Undefined symbols:

我的猜测是问题与“文件中缺少必需的架构臂”警告有什么关系?任何想法?

2 个答案:

答案 0 :(得分:1)

检查此网站:http://github.com/gabriel/ffmpeg-iphone-build 文件:build-x264-armv6

你会爱上它!

再见&祝你好运!

答案 1 :(得分:1)

许多开发人员在转换到XCode 4.3后遇到编译FFMpeg源的问题。这主要是因为与以前的版本不同,XCode4.3是一个捆绑包,最初不包括命令行工具。

我们试图建立通用脚本;您可以在此处下载构建FFMpeg的完整环境以及XCode4.3:https://github.com/melnikov/ffmpeg4iphone_4.3

的先决条件:

  1. 您必须在Mac上安装XCode4.2或4.3
  2. 您必须安装XCode命令行工具(可以通过XCode安装 - >首选项 - >下载)
  3. 你必须安装git for mac。
  4. 说明和说明:

    1. 将构建脚本放入某个目录(例如/ tmp / ffbuild),在其上设置可执行标志(通过运行'chmod + x ./build)
    2. 运行脚本。它会做什么:
    3. 它会将FFMpeg的最新版本检入FFmpeg目录(如果你已经将FFmpeg检出当前目录,你可以安全地将其注释掉)
    4. 它将尝试检测Xcode.app的位置,如果未安装Xcode,则会退出
    5. 它会尝试在Xcode.app中找到gcc,如果找不到则会退出(如果没有安装Xcode Command Tools,可能会发生这种情况)
    6. 如果上述步骤顺利进行,脚本将
    7. 创建build_results文件夹
    8. 随后将运行FFmpeg configure并制作3种不同的架构(armv6,armv7,i386)并将它们放入build_results文件夹中的相应目录中
    9. 将运行lipo并创建通用库(并将它们放在build_results / Universal中)。
    10. 顺便说一句,我已经在我的同事的许多mac上测试了脚本,其中一些人往往不会在mdfind中为Xcode.app返回任何结果。因此,如果脚本将返回'Xcode未安装',请随意将XCODEPATH变量设置为Xcode.app的路径