最近要在一个Android项目里使用FreeImage库,所以移植到Android中
最麻烦的也是最核心的就是这个MakeFile,R5编译有问题,正好R6诞生了
编译的过程中出现了无法找到‘swab’方法的错误,有人提交了一个path解决了这个问题
http://www.crystax.net/trac/attachment/ticket/32/swab.patch
编译过程中遇到 lstdc++ 无法找到的情况,所以LIBRARIES就写死了:LIBRARIES = -L $(SYSROOT)/usr/lib/ -lstdc++
include Makefile.srcs
NDK_ROOT=/home/dino/android-ndk-r6
SYSROOT=$(NDK_ROOT)/platforms/android-8/arch-arm/
CC="$(NDK_ROOT)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc"
CXX="$(NDK_ROOT)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-g++"
# Converts cr/lf to just lf
DOS2UNIX = dos2unix
LIBRARIES = -L $(SYSROOT)/usr/lib/ -lstdc++
MODULES = $(SRCS:.c=.o)
MODULES := $(MODULES:.cpp=.o)
CFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden -DNO_LCMS --sysroot=$(SYSROOT)
CFLAGS += $(INCLUDE)
CFLAGS += -nostdlib --sysroot=$(SYSROOT) -fno-short-enums
CFLAGS += -I"$(NDK_ROOT)/platforms/$(NDK_PLATFORM)/arch-arm/usr/include" -I"$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/include/" -I"$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/armeabi/include"
CFLAGS += -DANDROID
CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=neon
CXXFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy --sysroot=$(SYSROOT)
CXXFLAGS += $(INCLUDE)
CXXFLAGS += -nostdlib --sysroot=$(SYSROOT) -fno-short-enums
CXXFLAGS += -I"$(NDK_ROOT)/platforms/$(NDK_PLATFORM)/arch-arm/usr/include" -I"$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/include/" -I"$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/armeabi/include"
CXXFLAGS += -DANDROID
CXXFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=neon
#ifeq ($(shell sh -c 'uname -m 2>/dev/null || echo not'),x86_64)
# CFLAGS += -fPIC
# CXXFLAGS += -fPIC
#endif
TARGET = freeimage
STATICLIB = lib$(TARGET).a
SHAREDLIB = lib$(TARGET)-$(VER_MAJOR).$(VER_MINOR).so
LIBNAME = lib$(TARGET).so
VERLIBNAME = $(LIBNAME).$(VER_MAJOR)
HEADER = Source/FreeImage.h
default: all
all: dist
dist: FreeImage
cp *.a Dist
cp *.so Dist
cp Source/FreeImage.h Dist
dos2unix:
@$(DOS2UNIX) $(SRCS) $(INCLS)
FreeImage: $(STATICLIB) $(SHAREDLIB)
.c.o:
$(CC) $(CFLAGS) -c $< -o $@
.cpp.o:
$(CXX) $(CXXFLAGS) -c $< -o $@
$(STATICLIB): $(MODULES)
$(AR) r $@ $(MODULES)
$(SHAREDLIB): $(MODULES)
$(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
install:
install -d $(INCDIR) $(INSTALLDIR)
install -m 644 -o root -g root $(HEADER) $(INCDIR)
install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR)
install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR)
ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME)
ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)
ldconfig
clean:
rm -f core Dist/*.* u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME)
|