我试图构buildFFmpeg二进制文件与freetype库包括(我需要它的抽屉filter)。 不幸的是,我无法正确configurationffmpeg,每次尝试都以“freetype not found”错误结束。
PS我试图build立guardian-ffmpeg项目,但我在configuration过程中出现错误。
PS2build立平原ffmpeg工作得很好
configuration脚本:
make distclean &./configure --target-os=linux \ --cross-prefix=arm-linux-androideabi- \ --arch=arm \ --cpu=armv7-a \ --enable-libfreetype --enable-filter=drawtext \ #!Freetype params --disable-network \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --enable-protocol=file \ --sysroot=${ANDROID_NDK_ROOT_PATH}/platforms/${ANDROID_API_VERSION}/arch-arm \ --prefix=build/armeabi-v7a \ --disable-asm \ --extra-cflags='-DANDROID -Ifreetype2/ -I${ANDROID_NDK_ROOT_PATH}/sources/cxx-stl/system/include -march=armv7-a -mfloat-abi=softfp' \ --extra-ldflags='-Wl,--fix-cortex-a8 -Lfreetype2/ -L../android-libs -Wl,-rpath-link,../android-libs' \ --extra-cxxflags='-Wno-multichar -fno-exceptions -fno-rtti' make -j6 && make install || exit 0
目录结构:
ffmpeg/ -ffmpeg dirs/ -freetype2/ -rest of ffmpeg files ( including configure, make, etc )
我已经检查了guardian-project中的修补程序源,我发现ffmpegconfiguration文件可能需要对require_libfreetype
方法进行一些更改?!
提前致谢(对不起我的英文不好)
编辑:build立OSX小牛,最后3行config.log
; OSX在第二行没有得到pkg-config
因此是false
:
require_libfreetype false --exists --print-errors freetype ERROR: freetype not found
编辑:解决scheme!
我已经解决了我的问题。 我已经使用了Xubuntu 14.04 64bit + Freetype 2.5.3 +最新的FFmpeg repo +安装linux软件包“pkg_config”和ffmpegconfiguration脚本(查找pkg_config和检查初始化variables)
freetype的configuration文件:
NDK_BASE=/home/dpc/Documents/android-ndk-r9d/ NDK_PROCESSOR=x86_64 NDK_PLATFORM_LEVEL=9 NDK_ABI=arm NDK_COMPILER_VERSION=4.6 # Android NDK setup NDK_PLATFORM_LEVEL=9 NDK_ABI=arm NDK_COMPILER_VERSION=4.6 NDK_SYSROOT=$NDK_BASE/platforms/android-$NDK_PLATFORM_LEVEL/arch-$NDK_ABI NDK_UNAME=`uname -s | tr '[AZ]' '[az]'` if [ $NDK_ABI = "x86" ]; then HOST=i686-linux-android NDK_TOOLCHAIN=$NDK_ABI-$NDK_COMPILER_VERSION else HOST=$NDK_ABI-linux-androideabi NDK_TOOLCHAIN=$HOST-$NDK_COMPILER_VERSION fi NDK_TOOLCHAIN_BASE=$NDK_BASE/toolchains/$NDK_TOOLCHAIN/prebuilt/$NDK_UNAME-$NDK_PROCESSOR echo "dpc:" $NDK_TOOLCHAIN_BASE CC="$NDK_TOOLCHAIN_BASE/bin/$HOST-gcc --sysroot=$NDK_SYSROOT" LD=$NDK_TOOLCHAIN_BASE/bin/$HOST-ld STRIP=$NDK_TOOLCHAIN_BASE/bin/$HOST-strip PREFIX=$(pwd)/build simple_config(){ make clean ./configure --host=arm-linux-androideabi --without-zlib --without-png --prefix= make -j4 make install DESTDIR=$(pwd) } complex_config(){ ./configure \ CC="$CC" \ LD="$LD" \ CFLAGS="-std=gnu99 -mcpu=cortex-a8 -marm -mfloat-abi=softfp -mfpu=neon" \ --host=$HOST \ --with-sysroot="$NDK_SYSROOT" \ --enable-static \ --disable-shared \ --prefix=$PREFIX --without-bzip2 make -j4 make install } make clean complex_config
ffmpegconfiguration文件:
#!/bin/sh ANDROID_NDK_ROOT_PATH=/home/dpc/Documents/android-ndk-r9d ANDROID_API_VERSION=android-9 #export PATH=${ANDROID_NDK_ROOT_PATH}:${ANDROID_NDK_ROOT_PATH}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/:$PATH export PATH=${ANDROID_NDK_ROOT_PATH}:${ANDROID_NDK_ROOT_PATH}/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/:$PATH echo $PATH #export PKG_CONFIG_PATH=/home/dpc/Documents/freetype-2.5.3/build/lib/pkgconfig/ #echo $PKG_CONFIG_PATH #armv7-a neon #export ARCH=armeabi-v7a-neon #./configure --target-os=linux --cross-prefix=arm-linux-androideabi- --arch=arm --cpu=armv7-a --sysroot=${ANDROID_NDK_ROOT_PATH}/platforms/${ANDROID_API_VERSION}/arch-arm --disable-avdevice --disable-decoder=h264_vdpau --prefix=build/armeabi-v7a-neon --extra-cflags='-DANDROID -I${ANDROID_NDK_ROOT_PATH}/sources/cxx-stl/system/include -march=armv7-a -mfloat-abi=softfp -mfpu=neon' --extra-ldflags='-Wl,--fix-cortex-a8 -L../android-libs -Wl,-rpath-link,../android-libs' --extra-cxxflags='-Wno-multichar -fno-exceptions -fno-rtti' #make -j6 && make install && make distclean|| exit 0 #armv7-a export ARCH=armeabi-v7a ./configure --target-os=linux \ --cross-prefix=arm-linux-androideabi- \ --arch=arm \ --enable-libfreetype \ --cpu=armv7-a \ --sysroot=${ANDROID_NDK_ROOT_PATH}/platforms/${ANDROID_API_VERSION}/arch-arm \ --disable-avdevice \ --disable-decoder=h264_vdpau \ --prefix=build/armeabi-v7a \ --extra-cflags='-DANDROID -I${ANDROID_NDK_ROOT_PATH}/sources/cxx-stl/system/include -march=armv7-a -mfloat-abi=softfp' \ --extra-ldflags='-Wl,--fix-cortex-a8 -L../android-libs -Wl,-rpath-link,../android-libs' \ --extra-cxxflags='-Wno-multichar -fno-exceptions -fno-rtti' make -j6 && make install && make distclean|| exit 0
希望它有助于某人(cc:@SinhHo)
交叉编译ffmpeg
for android与Mac上的freetype
支持时,我得到了同样的错误。
以下是错误输出
arm-linux-androideabi-gcc: error: /var/folders/f0/b79d4kbs6cd1gcgt39gpw7t80000gn/T//ffconf.2zxiYMYG.m: Objective-C compiler not installed on this system require_libfreetype false --exists --print-errors freetype2 ERROR: freetype2 not found
所以我认为这个错误是由pkg-config
引起的。
我的解决方案是将freetype
的pkgconfig文件添加到PKG_CONFIG_PATH
并指定从端口安装的pkg-config
。
export PKG_CONFIG_PATH=../freetype-2.6.3/out/armeabi/lib/pkgconfig ./configure ... --pkg-config=/opt/local/bin/pkg-config ...
注意
我使用下面的配置从android独立工具链构建了freetype
库
export CFLAGS="-fPIC" ./configure --host=arm-linux-androideabi \ --with-png=no --enable-shared=no --prefix=out/armeabi
希望这对任何有类似问题的人都有帮助。