下载NDK : https://developer.android.google.cn/ndk/downloads/
1 生成一个main.c文件
cd Volumes/SoftCode/DongNaoVIP/ndk/hxndk
vim main.c //进入到输入模式
i //insert模式
//添加代码
#include <stdio.h>
int main(){
printf("hongxue123\n");
return 0;
}
按下esc按键,进入到命令模式
:wq //就会生成main.c文件
2 将main.c生成为Android可执行文件main
export CC=/Volumes/Docment/soft/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc
export AAA="--sysroot=/Volumes/Docment/soft/android-ndk-r17c/platforms/android-21/arch-arm -isystem /Volumes/Docment/soft/android-ndk-r17c/sysroot/usr/include -isystem /Volumes/Docment/soft/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi"
cd Volumes/SoftCode/DongNaoVIP/ndk/hxndk
$CC $AAA -pie main.c -o main
3 将main文件导入到手机data/local/tmp/ 目录下面,并执行
cd Volumes/SoftCode/DongNaoVIP/ndk/hxndk
adb devices
//adb push main /sdcard
adb push main data/local/tmp/
adb shell
ls
//cd sdcard
cd data/local/tmp/
ls
./main //运行查看结果
注如果选择sdcard会有权限问题,除非手机有root权限。所以还是 cd data/local/tmp/
–sysroot=XX
使用xx作为这一次编译的头文件与库文件的查找目录,查找下面的 usr/include usr/lib目录
-isysroot XX
头文件查找目录,覆盖–sysroot ,查找 XX/usr/include
-isystem XX
指定头文件查找路径(直接查找根目录)
-IXX
头文件查找目录
优先级:
-I -> -isystem -> sysroot
-LXX
指定库文件查找目录
-lxx.so
指定需要链接的库名
4 生成动态库
生成test.c文件,代码如下:
#include <stdio.h>
int test(){
printf("hongxue test\n");
return 0;
}
生成动态库,名为libTest.so
$CC $AAA -fPIC -shared test.c -o libTest.so
-shared表示生成动态库
查看so文件
cd Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin
arm-linux-androideabi-nm /Volumes/SoftCode/DongNaoVIP/ndk/hxndk/libTest.so