{Android-编译FreeImage For Android}

本文详细介绍了如何在Android环境中编译FreeImage库,涉及Unix系统、Makefile配置、头文件包含和DOS命令行操作等关键步骤,为Android应用开发提供图像处理支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近要在一个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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值