Android平台下Live555移植

来源:互联网 发布:折800是淘宝官方活动吗 编辑:程序博客网 时间:2024/06/05 00:49

下载最新Live555,解压后,新建一个config.android文件。

CROSS_COMPILE?=         arm-linux-androideabi-
COMPILE_OPTS =          $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I$(ANDROID_NDK)/platforms/android-9/arch-arm/usr/include -DLOCALE_NOT_USED -DANDROID

运行:./genMakefiles android

make

出现错误

arm-linux-androideabi-g++ -otestMP3Streamer  testMP3Streamer.o ../liveMedia/libliveMedia.a ../groupsock/libgroupsock.a ../BasicUsageEnvironment/libBasicUsageEnvironment.a ../UsageEnvironment/libUsageEnvironment.a 
/home/lonsn/work/android/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: error: cannot open crtbegin_dynamic.o: No such file or directory

是因为在link的参数里没有把sysroot变量加上,找不到android的一些库

在testProgs/Makefile.tail里加上参数

CONSOLE_LINK_OPTS += --sysroot=$(ANDROID_NDK)/platforms/android-9/arch-arm

重新编译,出现错误:

rm-linux-androideabi-g++ -otestMP3Streamer  --sysroot=/home/lonsn/work/android/android-ndk-r9/platforms/android-9/arch-arm testMP3Streamer.o ../liveMedia/libliveMedia.a ../groupsock/libgroupsock.a ../BasicUsageEnvironment/libBasicUsageEnvironment.a ../UsageEnvironment/libUsageEnvironment.a 
/home/lonsn/work/android/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: testMP3Streamer.o: in function main:testMP3Streamer.cpp(.text.startup+0x11c): error: undefined reference to '__cxa_end_cleanup'

是因为android默认自带的库不支持STL,需要重新编个新的工具链来支持。

运行 $ANDROID_NDK/build/tools/make-standalone-toolchain.sh --platform=android-9 --install-dir=/tmp/my-android-toolchain

会在/tmp/my-android-toolchain目录下生成新的工具链,使用该工具链,修改config.android文件

NDK_TOOLCHAIN = /tmp/my-android-toolchain
CROSS_COMPILE?=         $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-
COMPILE_OPTS =          $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -I$(NDK_TOOLCHAIN)/arm-linux-androideabi/include/c++/4.6 -I$(NDK_TOOLCHAIN)/arm-linux-androideabi/include/c++/4.6/arm-linux-androideabi -DLOCALE_NOT_USED -DANDROID

修改testProgs/Makefile.tail

CONSOLE_LINK_OPTS += --sysroot=/tmp/my-android-toolchain/sysroot

重新编译,顺利通过


原创粉丝点击