gcc交叉编译
暂时不想研究Android.mk
就取巧了一下,用的独立工具链
然而不行
添加环境变量
打开~/.bashrc文件,填入这些内容。
1 | #android-ndk-gcc |
source ~/.bashrc
启用。
编写程序
1 |
|
CC -o hello-arm -c hello-arm.c
理论上这样就可以了,然而我这还是不可以。无法解决的报错。
使用ndk-build
因为上面那种方法GG,就只能用这种方法了~
添加环境变量
打开~/.bashrc
输入下面这两句
1 | export NDK=~/Library/Android/sdk/ndk-bundle |
然后source ~/.bashrc
,就可以使用ndk-build了。
新建android工程和jni目录
这个肯定不用我说了……就建一个empty project即可
编写c文件和Android.mk
新建脚本文件名为Android.mk,这是ndk-build需要的工程编译脚本,描述了编译程序的各种选项和依赖.
内容如下:
1 | LOCAL_PATH := $(call my-dir) |
其中:
LOCAL_PATH表示本工程源码的路径, my-dir表示Android.mk的路径;
CLEAR_VARS让编译器清除已经定义过的宏,避免在编译多个模块时发生错误,因为这些宏是全局的,必须重新设置;
LOCAL_ARM_MODE指定程序使用的ARM指令模式;
LOCAL_MODULE指定生成的模块名,如果生成的是共享库,模块名会变为libhello-arm.so;
LOCAL_SRC_FILES指定源文件列表;
BUILD_EXECUTABLE表示生成的文件是可执行的,其他选项有BUILD_SHARED_LIBRARY(生成动态库),BUILD_STATIC_LIBRARY(生成静态库).
编译
在jni目录下,输入ndk-build,编译完成后的文件在libs/armeabi目录下.
执行
执行adb push hello-arm /data/local/tmp到手机上