如何在ubuntu下编译dolphin-player所用的libffmpeg.so
2014-09-03 10:57
791 查看
http://blog.csdn.net/qiuchangyong/article/details/23833223
dolphin-player是一个不怎么复杂的android下的播放器,http://code.google.com/p/dolphin-player/是它的项目地址。
我得到源代码后,在jni下编译,按读我文档里的说明,修改了AVPLAYER_PATH为项目所在的实际位置,还有包含的头文件的路径。编译可以成功。
但是那个libffmpeg.so没法编译成功,于是深入研究了一下,里面有个build_android_r8.sh正是编译所需的shell脚本,问题在于这个脚本是作者在苹果操作系统下用ndk交叉编译工具编译的,而我在ubuntu下,所以要改里面的东西,其实就是相应的改一下ndk下的想对应的路径,另外还要注意,libffmpeg.so是用ld链接所需的几个ffmpeg静态库得到的,ld所用的选项在苹果下和ubuntu下不同,用arm-linux-androideabi-ld --help可以看到支持的选项,所以有两个地方要改一下。
把-z,noexecstack改成-z noexecstack,另外要去掉--warn-once选项,这个在ubuntu下没有。
我的最后改成这样的:
NDK=/home/daniel/android-ndk-r9d
PLATFORM=$NDK/platforms/android-8/arch-arm
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64
$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -soname libffmpeg.so -shared -nostdlib -z noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a
libavutil/libavutil.a libswscale/libswscale.a libswresample/libswresample.a $BZLIB_LDPATH/libbz2.a -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.6/libgcc.a
这样就可以编译出来不同cpu版本对应的libffmpeg.so
dolphin-player是一个不怎么复杂的android下的播放器,http://code.google.com/p/dolphin-player/是它的项目地址。
我得到源代码后,在jni下编译,按读我文档里的说明,修改了AVPLAYER_PATH为项目所在的实际位置,还有包含的头文件的路径。编译可以成功。
但是那个libffmpeg.so没法编译成功,于是深入研究了一下,里面有个build_android_r8.sh正是编译所需的shell脚本,问题在于这个脚本是作者在苹果操作系统下用ndk交叉编译工具编译的,而我在ubuntu下,所以要改里面的东西,其实就是相应的改一下ndk下的想对应的路径,另外还要注意,libffmpeg.so是用ld链接所需的几个ffmpeg静态库得到的,ld所用的选项在苹果下和ubuntu下不同,用arm-linux-androideabi-ld --help可以看到支持的选项,所以有两个地方要改一下。
把-z,noexecstack改成-z noexecstack,另外要去掉--warn-once选项,这个在ubuntu下没有。
我的最后改成这样的:
NDK=/home/daniel/android-ndk-r9d
PLATFORM=$NDK/platforms/android-8/arch-arm
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64
$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -soname libffmpeg.so -shared -nostdlib -z noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a
libavutil/libavutil.a libswscale/libswscale.a libswresample/libswresample.a $BZLIB_LDPATH/libbz2.a -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.6/libgcc.a
这样就可以编译出来不同cpu版本对应的libffmpeg.so
相关文章推荐
- 如何在ubuntu下编译dolphin-player所用的libffmpeg.so
- ubuntu 12.04 NDK + android 4.0.3_r1 编译libffmpeg.so
- 如何在Ubuntu12.1下 编译 ffmpeg 1.1.4
- FFmpeg Notes - 1.Ubuntu14.04下编译安装FFmpeg+FFplayer
- ubuntu16.04下编译caffe出现.build_release/lib/libcaffe.so: undefined reference to google ::protobuf...的问题
- Ubuntu16.04 编译ijkplayer so,并导入android,运行官方demo
- FFmpeg 在ubuntu 中编译出so
- 三、ffmpeg编译成android的单独的libffmpeg.so
- Ubuntu上编译OpenCV出现No rule to make target '/usr/lib/libpng.so' 错误
- Ubuntu11.20 32位linux下编译cppunit报 libcppunit.so: undefined reference to `dlsym'错误问题
- 如何编译 libruby.so
- ubuntu 平台 FFmpeg Android .so文件编译
- 如何在Ubuntu14中编译ffmpeg,并且建立一个eclipse工程
- 使用ubuntu14和ndk 编译ffmpeg在android平台的so动态库
- ffmpeg 如何编译出单一的so文件
- FFmpeg 在ubuntu 中编译出so
- 流媒体技术学习笔记之(十八)Ubuntu 16.04.3 如何编译 FFmpeg 记录
- ffmpeg2.6.2在Ubuntu下使用NDK编译成.so文件
- windows下使用ndk-r8e编译libffmpeg.so-1.2.1要点
- ubuntu下Android编译JNI产生的so库如何push到/system/lib