Iphone 无法为armv6-7构建ffmpeg
我一直在尝试用我能想到的所有可能的方式构建ffmpeg。我正在尝试使用他们git存储库中的最新版本,并使用一个构建脚本(我已确认该脚本有效),它来自以下问题:。剧本昨天更新了,显然对问题中的那个人有用 我的问题是它没有为armv6和armv7生成.a文件(或实际上任何文件)。因此,lipo命令转换为通用LIB失败。我也尝试过使用来自的构建脚本,但没有任何成功。最后,lipo命令也失败了,我得到了以下结果:Iphone 无法为armv6-7构建ffmpeg,iphone,ios,ffmpeg,compilation,arm,Iphone,Ios,Ffmpeg,Compilation,Arm,我一直在尝试用我能想到的所有可能的方式构建ffmpeg。我正在尝试使用他们git存储库中的最新版本,并使用一个构建脚本(我已确认该脚本有效),它来自以下问题:。剧本昨天更新了,显然对问题中的那个人有用 我的问题是它没有为armv6和armv7生成.a文件(或实际上任何文件)。因此,lipo命令转换为通用LIB失败。我也尝试过使用来自的构建脚本,但没有任何成功。最后,lipo命令也失败了,我得到了以下结果: lipo: can't open input file: ./compiled/armv6
lipo: can't open input file: ./compiled/armv6/lib/libavcodec.a (No such file or directory)
lipo: can't open input file: ./compiled/armv6/lib/libavdevice.a (No such file or directory)
lipo: can't open input file: ./compiled/armv6/lib/libavfilter.a (No such file or directory)
lipo: can't open input file: ./compiled/armv6/lib/libavformat.a (No such file or directory)
lipo: can't open input file: ./compiled/armv6/lib/libavutil.a (No such file or directory)
lipo: can't open input file: ./compiled/armv6/lib/libpostproc.a (No such file or directory)
lipo: can't open input file: ./compiled/armv6/lib/libswscale.a (No such file or directory)
如果有人知道要在那里寻找什么,我也会发布整个输出(因为我不知道从哪里开始,它几乎有5000行输出)
我还应该提到,我正在为armv6、armv7和i386编译它。我想在XCode中导入它,从视频提要中获取H.264帧
当我尝试为armv6构建时,我使用以下配置:
./configure \
--enable-cross-compile \
--arch=arm \
--extra-cflags='-arch armv6' \
--extra-ldflags='-arch armv6' \
--target-os=darwin \
--cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \
--sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk \
--cpu=arm1176jzf-s \
--extra-ldflags=-L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/usr/lib/system \
--prefix=compiled/armv6
并获得以下输出:
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc is unable to create an executable file.
C compiler test failed.
If you think configure made a mistake, make sure you are using the latest
version from Git. If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.log" produced by configure as this will help
solving the problem.
那么问题是,我应该使用什么样的c编译器?我试过不同的方法:
arm-apple-darwin10-gcc-4.2.1
arm-apple-darwin10-llvm-gcc-4.2
海湾合作委员会
但结果是一样的。gcc同时适用于i386和armv7,所以我想它也适用于armv6我使用了下面的代码来编译armv6和armv7。我无法让它在i386上工作,我收到了cputype和SUBCUTYPE错误的错误消息。显然,CPU类型应该是x86,子计算机类型应该是intel 无论如何,我使用了以下构建脚本来编译arm体系结构(我最终使用了gcc,它起了作用,我猜是配置标志从一开始就错了): 生成脚本:
#!/bin/sh
set -e
SCRIPT_DIR=$( (cd -P $(dirname $0) && pwd) )
DIST_DIR_BASE=${DIST_DIR_BASE:="$SCRIPT_DIR/dist"}
if [ -d ffmpeg ]
then
echo "Found ffmpeg source directory, no need to fetch from git..."
else
echo "Fetching ffmpeg from git://git.videolan.org/ffmpeg.git..."
git clone git://git.videolan.org/ffmpeg.git
fi
ARCHS=${ARCHS:-"armv6 armv7"}
for ARCH in $ARCHS
do
FFMPEG_DIR=ffmpeg-$ARCH
if [ -d $FFMPEG_DIR ]
then
echo "Removing old directory $FFMPEG_DIR"
rm -rf $FFMPEG_DIR
fi
echo "Copying source for $ARCH to directory $FFMPEG_DIR"
cp -a ffmpeg $FFMPEG_DIR
cd $FFMPEG_DIR
DIST_DIR=$DIST_DIR_BASE-$ARCH
mkdir -p $DIST_DIR
case $ARCH in
armv6)
EXTRA_FLAGS="--enable-cross-compile --target-os=darwin --arch=arm --cpu=arm1176jzf-s"
EXTRA_CFLAGS="-arch $ARCH"
EXTRA_LDFLAGS="-arch $ARCH"
;;
armv7)
EXTRA_FLAGS="--enable-cross-compile --target-os=darwin --arch=arm --cpu=cortex-a8 --enable-pic"
EXTRA_CFLAGS="-arch $ARCH"
EXTRA_LDFLAGS="-arch $ARCH"
;;
x86_64)
EXTRA_CC_FLAGS="-mdynamic-no-pic"
;;
esac
echo "Configuring ffmpeg for $ARCH..."
./configure \
--prefix=$DIST_DIR \
--extra-ldflags=-L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/system \
--disable-bzlib \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \
--cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \
--sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk \
--extra-ldflags="$EXTRA_LDFLAGS" \
--extra-cflags="$EXTRA_CFLAGS" \
$EXTRA_FLAGS
echo "Installing ffmpeg for $ARCH..."
make && make install
cd $SCRIPT_DIR
if [ -d $DIST_DIR/bin ]
then
rm -rf $DIST_DIR/bin
fi
if [ -d $DIST_DIR/share ]
then
rm -rf $DIST_DIR/share
fi
done
并组合libs脚本:
#!/bin/bash
set -e
ARCHS="armv6 armv7"
for ARCH in $ARCHS
do
if [ -d dist-$ARCH ]
then
MAIN_ARCH=$ARCH
fi
done
if [ -z "$MAIN_ARCH" ]
then
echo "Please compile an architecture"
exit 1
fi
OUTPUT_DIR="dist-uarch"
rm -rf $OUTPUT_DIR
mkdir -p $OUTPUT_DIR/lib $OUTPUT_DIR/include
for LIB in dist-$MAIN_ARCH/lib/*.a
do
LIB=`basename $LIB`
LIPO_CREATE=""
for ARCH in $ARCHS
do
if [ -d dist-$ARCH ]
then
LIPO_CREATE="$LIPO_CREATE-arch $ARCH dist-$ARCH/lib/$LIB "
fi
done
OUTPUT="$OUTPUT_DIR/lib/$LIB"
echo "Creating: $OUTPUT"
lipo -create $LIPO_CREATE -output $OUTPUT
lipo -info $OUTPUT
done
echo "Copying headers from dist-$MAIN_ARCH..."
cp -R dist-$MAIN_ARCH/include/* $OUTPUT_DIR/include
然后我从BUILD-FOLDER/dist-uarch导入.a文件,它像一个符咒一样在xcode中构建 您知道您不能将FFMPEG用于要提交到应用商店的应用,因为FFMPEG已获得LGPL/GPL许可?@DarkDust是的,我知道。但我无论如何都想编译它。对于我可以使用什么其他方法来实时检索h.264帧,您有什么建议吗?可能重复的cputype错误,请重新进行清理和制作并安装。保持清洁才是关键