繁体   English   中英

Android NDK的编译库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM