live版本:2012.02.04
编译平台:ubuntu10.04 64bit
移植步骤:
1)install android NDK, generate “standalone” toolchain by NDK tools
i.e: sudo /srv/android-ndk-r5b/build/tools/make-standalone-toolchain.sh --platform=android-9 --install-dir=/srv/standalone-toolchain-android-9
2)add file: config.android
CROSS_COMPILE?= /srv/standalone-toolchain-android-9/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 -DLOCALE_NOT_USED
C = c
C_COMPILER = $(CROSS_COMPILE)gcc
C_FLAGS = $(COMPILE_OPTS)
CPP = cpp
CPLUSPLUS_COMPILER = $(CROSS_COMPILE)g++
CPLUSPLUS_FLAGS = $(COMPILE_OPTS) -Wall -DBSD=1
OBJ = o
LINK = $(CROSS_COMPILE)g++ -o
LINK_OPTS =
CONSOLE_LINK_OPTS = $(LINK_OPTS)
LIBRARY_LINK = $(CROSS_COMPILE)ar cr
LIBRARY_LINK_OPTS = $(LINK_OPTS)
LIB_SUFFIX = a
LIBS_FOR_CONSOLE_APPLICATION =
LIBS_FOR_GUI_APPLICATION =
EXE =
3)add -DLOCALE_NOT_USED into compile option (config.android), to avoid compile error
4)modify groupsock/GroupsockHelper.cpp, to avoid compile error
# in socketJoinGroupSSM(), socketLeaveGroupSSM()
# change:
imr.imr_multiaddr.s_addr = groupAddress;
imr.imr_sourceaddr.s_addr = sourceFilterAddr;
imr.imr_interface.s_addr = ReceivingInterfaceAddr;
# to:
imr.imr_multiaddr = groupAddress;
imr.imr_sourceaddr = sourceFilterAddr;
imr.imr_interface = ReceivingInterfaceAddr;
编译过程:
1)./genMakefiles android
2)find . -name 'Makefile' -exec ./fix-makefile {} \;
3)make