Android ndk 如何使用Android.mk编译简单的本机代码?

Android ndk 如何使用Android.mk编译简单的本机代码?,android-ndk,Android Ndk,特别是我正在尝试编译chainDD的su二进制文件。我试图使用ndk build,但似乎我需要设置ndk\u PROJECT\u路径,但文档中没有说明该设置的内容。您需要按如下方式建立项目文件夹: 根项目 |\ujni/(包括Android.mk和您的C/C++代码) |其他目录 jni目录无法更改名称。 并在project_根目录中运行ndk build。首先,确保您拥有ndk: 以下是为您的手机编译C二进制文件的最简单方法: 通常$NDK(可能不同)= Linux: /主页//andr

特别是我正在尝试编译chainDD的su二进制文件。我试图使用
ndk build
,但似乎我需要设置
ndk\u PROJECT\u路径
,但文档中没有说明该设置的内容。

您需要按如下方式建立项目文件夹:

根项目

|\ujni/(包括Android.mk和您的C/C++代码)

|其他目录

jni目录无法更改名称。
并在project_根目录中运行ndk build。

首先,确保您拥有ndk:

以下是为您的手机编译C二进制文件的最简单方法:

通常$NDK(可能不同)=

Linux:

/主页/
/android ndk

Mac OS X:

/用户/
/android ndk

两者: $HOME/android ndk

在终端:

# create tool-chain - one line
$NDK/build/tools/make-standalone-toolchain.sh --platform=android-3 --install-dir=/tmp/my-android-toolchain

# add to terminal PATH variable
export PATH=/tmp/my-android-toolchain/bin:$PATH

# make alias CC be the new gcc binary
export CC=arm-linux-androideabi-gcc

# compile your C code(I tried hello world)
$CC -o foo.o -c foo.c

# push binary to phone
adb push foo.o /data/local/tmp

# execute binary
adb /data/local/tmp/foo.o
如果我能帮忙,请告诉我


关于,

一般来说,您从项目内部运行ndk build-如果您这样做是否有效?我运行ndk build,它抱怨ndk_项目路径您使用的是ndk的哪个版本?您能否将ndk_项目路径设置为项目的实际路径(例如$ndk_DIR/samples/your project,其中$ndk_DIR是ndk的路径)?我没有太多的Android开发经验,因此我不确定Android项目的最小组成部分是什么。一个Android.mk和我的源文件是否足够?目前,我正在将我的NDK_项目_路径设置为源文件和Android.mk的目录。为什么它应该是ndk的一个子目录?你是想给它添加一些格式吗?你的文件夹结构不是很清楚。谢谢你的回答。这种简单的目录结构足以让ndk构建工作。在我的例子中,我试图编译一个用于另一个项目的静态库,运行ndk build后,我在project_root/obj/local/armeabi下找到了.a文件。
$ndk/build/tools/make-standalone-toolchain.sh--platform=android-3--install dir=/tmp/my-android toolchain
可能会抛出一个错误
无法从toolchain
自动配置arch,原因是
$ndk/build/tools/make-standalone-toolchain.sh--platform=android-3--install dir=/tmp/my android toolchain
可能会抛出一个错误
无法从toolchain自动配置arch
,根据这个答案,应该添加
--toolchain=arm-linux-androideabi-4.8