使用Makefile编译c文件成so库,供播放器调用--静态链接库

底层播放器为了对播放地址进行校验,需调用/system/lib下的so库;因此需要将c文件编译成静态链接库,本文采用Makefile的方式,基于安卓ndk实现:

源码:

#调用:$(NDKHOME)\prebuilt\windows\bin\make执行

NDKHOME   = C:\ndk13b\android-ndk-r13b-windows-x86_64\android-ndk-r13b
SYSROOT   = $(NDKHOME)\platforms\android-19\arch-arm
TOOLSDIR  = $(NDKHOME)\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64
CC        = $(TOOLSDIR)\bin\arm-linux-androideabi-gcc.exe --sysroot=$(SYSROOT)
CXX       = $(TOOLSDIR)\bin\arm-linux-androideabi-g++.exe --sysroot=$(SYSROOT)
AR        = $(TOOLSDIR)\bin\arm-linux-androideabi-ar.exe
CPPFLAGS  = -DNDEBUG -D_FILE_OFFSET_BITS=64
CFLAGS    = -march=armv7-a -mfloat-abi=softfp -mfpu=neon -mthumb -mlittle-endian -O2 -fomit-frame-pointer -Wall -Wextra -pipe
#CFLAGS    =  -march=armv8-a -mfloat-abi=softfp -mfpu=neon -mthumb -mlittle-endian -O2 -fomit-frame-pointer -Wall -Wextra -pipe

CXXFLAGS  = $(CFLAGS)
#LDFLAGS   = -s -nostdlib -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections -Wl,--as-needed -Wl,-Bdynamic

INCLDIR   = -I.
LIBDIR    = -L.

LIBS      = -lc -landroid -ldl -llog -lm -lz -lgcc -shared
#SLIBS     = $(SYSROOT)\usr\lib\libpcap.a

#EXTRAOBJ  = $(SYSROOT)\usr\lib\crtbegin_dynamic.o $(SYSROOT)\usr\lib\crtend_android.o

TARGET   = libtermplug.so

OBJS=\
          $(patsubst %.c,%.o,$(wildcard *.c)) \
          $(patsubst %.cpp,%.o,$(wildcard *.cpp)) \
          $(patsubst %.cxx,%.o,$(wildcard *.cxx)) \
          $(patsubst %.cc,%.o,$(wildcard *.cc))


.SUFFIXES: .c .cpp .cxx .cc .o

.c.o:
    $(CC)  $(CPPFLAGS) $(CFLAGS)   -c $*.c   $(INCLDIR)

.cpp.o:
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $*.cpp $(INCLDIR)

.cxx.o:
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $*.cxx $(INCLDIR)

.cc.o:
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $*.cc  $(INCLDIR)

all : $(TARGET)

$(TARGET) : $(OBJS)
    $(CC) $(LDFLAGS) -o $(TARGET) $(OBJS) $(LIBDIR) $(LIBS)

clean:
    del $(TARGET) $(OBJS)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值