[英]Compile library for Android NDK
我在c / c ++中有一个库。 我已经在一些C ++程序中成功使用了它。
我想测试它是否可以在Android上编译,以及它的大小等等。
我有没有办法在没有整个Android Java项目的情况下将此库编译为.so
文件? 我对Android开发一无所知,但是有一个朋友想使用我的库。 我可以给他提供一个已编译的.so
文件吗?
我发现的每个资源都说它需要从Android Project中的JNI
文件夹中编译出来。
我发现使用build-ndk脚本不需要真正的项目。 我创建了一个文件夹project
,除了另一个文件夹jni
之外,什么都没有,然后将所有源文件都放在该文件夹中。 然后,我创建了Android.mk
文件,并按照ndk文档中的描述运行了脚本。
您需要做的是android Native Development Kit(NDK) http://developer.android.com/sdk/ndk/index.html和一个GCC编译器。
然后,您可以使用如下所示的参数创建一个Makefile(感谢ViTo Brothers Apoyan )并创建您的共享库。
GCC := C:\Tools\ndk-toolchain\ndk-standalone\bin\arm-linux-androideabi-gcc.exe
GPP := C:\Tools\ndk-toolchain\ndk-standalone\bin\arm-linux-androideabi-g++.exe
AR := C:\Tools\ndk-toolchain\ndk-standalone\bin\arm-linux-androideabi-ar.exe
OPTIONS :=\
-fpic \
-ffunction-sections \
-funwind-tables \
-fstack-protector \
-D__ARM_ARCH_5__ \
-D__ARM_ARCH_5T__ \
-D__ARM_ARCH_5E__ \
-D__ARM_ARCH_5TE__ \
-Wno-psabi \
-march=armv5te \
-mtune=xscale \
-msoft-float \
-mthumb \
-Os \
-fomit-frame-pointer \
-fno-strict-aliasing \
-finline-limit=64 \
-DANDROID \
-Wa, \
-O2 \
-DNDEBUG \
-g \
default: all
all: obj
$(AR) r mysharedlibrary.so *.o
obj:
$(GCC) $(OPTIONS) -c *.c
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.