https://tieba.baidu.com/p/5213203060?red_tag=1988544260
用ndk编译用于安卓上运行的库hello_world.so.
prerequisites:
1.安装好android-ndk-r12b或者其他版本,安装有android sdk
2.安装好MinGW与配件msys
ndk
msys
从网盘分享下载解压得hello_world.cpp、makefile两个文件
度盘1o7PIsAI密码g7dn
其中hello_world.cpp:
#include <iostream>
int main(int argc,char *argv[])
{
for (int i=0;i<argc;i++)
printf("argv[%d]=%s\n",i,argv[i]);
return 0;
}
是个回显命令行参数的简单程序。
配置makefile:
用notepad++打开,将其中的NDK_ROOT变量值改成你自己的ndk根路径。android SDK根目录变量PLATFROM_ROOT如是。
#makefile for hello_world
NDK_ROOT=F:/COD/NVPACK/android-ndk-r12b
TOOLCHAINS_ROOT=$(NDK_ROOT)/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
TOOLCHAINS_PREFIX=$(TOOLCHAINS_ROOT)/bin/arm-linux-androideabi
TOOLCHAINS_INCLUDE=$(TOOLCHAINS_ROOT)/lib/gcc/arm-linux-androideabi/4.9.x/include-fixed
PLATFROM_ROOT=$(NDK_ROOT)/platforms/android-23/arch-arm
PLATFROM_INCLUDE=$(PLATFROM_ROOT)/usr/include
PLATFROM_LIB=$(PLATFROM_ROOT)/usr/lib
MODALE_NAME=hello_world
RM=del
FLAGSMY=-I$(TOOLCHAINS_INCLUDE)\
-I$(PLATFROM_INCLUDE)\
-I$(NDK_ROOT)/sources/cxx-stl/stlport/stlport/ \
-L$(PLATFROM_LIB)\
-l$(NDK_ROOT)/sources/cxx-stl/stlport/libs/armeabi/libstlport_static.a\
-nostdlib\
-lgcc\
-Bdynamic\
-lc\
-shared
OBJS=$(MODALE_NAME).o\
$(PLATFROM_LIB)/crtbegin_dynamic.o\
$(PLATFROM_LIB)/crtend_android.o
all:
$(TOOLCHAINS_PREFIX)-gcc $(FLAGSMY) $(MODALE_NAME).cpp -o $(MODALE_NAME).so
clean:
$(RM) *.o
注意makefile的tab就是tab而不能是4个空格
编译:
双击打开msys.bat,cd 至hello_world.cpp、makefile所在目录,比如F:/video_wrkst/ndkTry/huixian
make
完成!
附gcc编译出.exe指令:
g++ hello_world.cpp -o hello_world.exe -std=c++11
来源:oschina
链接:https://my.oschina.net/u/4273344/blog/4308532