欢迎各位兄弟 发布技术文章
这里的技术是共享的
标签: 杂谈 | 分类: 图形图像 |
运行,一切无误!
来自 http://blog.sina.com.cn/s/blog_54b5ea250100r53o.html
编译ffmpeg和x264吃了不少苦,很重要的一点就是如果你对这个编译不是很熟的话千万不要尝试用cygdrive+windows编译。建议在Ubuntu下编译!
1.首先要确保已经编译了x264的源码
这边是我x264的sh
- export NDK=/home/mtb0157/workspace/android-ndk-r9
- export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
- export CC=$PREBUILT/bin/arm-linux-androideabi-gcc
- export LD=$PREBUILT/bin/arm-linux-androideabi-ld
- export AS=$PREBUILT/bin/arm-linux-androideabi-gcc
- export AR=$PREBUILT/bin/arm-linux-androideabi-ar
- export RANLIB=$PREBUILT/bin/arm-linux-androideabi-ranlib
- export STRIP=$PREBUILT/bin/arm-linux-androideabi-strip
- export PLATFORM=$NDK/platforms/android-8/arch-arm
- export PREFIX=/home/mtb0157/Project/lib
- export STRIP=$PREBUILT/bin/arm-linux-androideabi-strip
- ./configure --prefix=$PREFIX \
- --enable-static \
- --enable-pic \
- --enable-strip \
- --disable-cli \
- --extra-cflags= "-march=armv7-a -mfloat-abi=softfp -mfpu=neon" \ #这个没啥用
- --host=arm-linux \
- --cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
- --sysroot=$PLATFORM
2.之所以编译的时候提示找不到x264,有两种可能.一是没有把静态库包含进来,
二是包含进来了但是没有权限! 之前我尝试用 -I/usr/local/lib 这个目录作为附加库,结果失败了
于是我用上面的.sh定义我的
PREFIX=/home/mtb0157/Project/lib
x264编译完后 make install 就可以把库导到上面的目录了
3.在ffmpeg的sh里面加入额外的库和头文件
下面是我的sh
- #!/bin/bash
- NDK=/home/mtb0157/workspace/android-ndk-r9
- SYSROOT=$NDK/platforms/android-9/arch-arm/
- TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
- export PLATFORM=$NDK/platforms/android-8/arch-arm
- export PREFIX=/home/mtb0157/Project/lib
- function build_one
- {
- ./configure --prefix=$PREFIX\
- --disable-doc \
- --enable-gpl \
- --enable-libx264 \
- --disable-symver \
- --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
- --target-os=linux \
- --arch=arm \
- --enable-cross-compile \
- --sysroot=$PLATFORM \
- --extra-cflags=-I/home/mtb0157/Project/lib/include \
- --extra-ldflags=-L/home/mtb0157/Project/lib/lib
- }
- CPU=arm
- PREFIX=$(pwd)/android/$CPU
- ADDI_CFLAGS="-marm"
- build_one
这边指定了之前我导出的x264的库
--extra-cflags=-I/home/mtb0157/Project/lib/include \
- --extra-ldflags=-L/home/mtb0157/Project/lib/lib
来自 https://blog.csdn.net/zsc09_leaf/article/details/14452267
嗯?吾明明编译了啊。怎么回事?有两种可能:
在编译264的时候,configure没有加参数。正确写法:
- ./configure \
- --prefix=${DEST_LIB_DIR} \
- --enable-shared
在编译ffmpeg的时候,需要指明libx264.so所在目录。
具体是这样指定的(注意:--extra-ldflags只能有一个)
- BUILD_LIBS=${HOME}/build_libs
- ./configure \
- --prefix="${BUILD_LIBS}" \
- --extra-cflags="-I${BUILD_LIBS}/include" \
- --extra-ldflags="-L${BUILD_LIBS}/lib" \
- --bindir="${BUILD_LIBS}/bin"
这里只列出相关参数。