相关疑难解决方法(0)

Android NDK R8E缺少stdlib.h

我正在使用Android NDK(android-ndk-r8e)测试一些本机库代码.本机库是从其makefile而不是Android的修改后的构建系统构建的.使用makefile而不是Android的构建系统是项目要求(OpenSSL和FIPS).

该库需要针对API 14(Android 4.0),API 16(Android 4.1)和API 17(Android 4.2)构建.虽然它使用了库的makefile,但我们正在使用android-ndk-r8e-linux-x86_64(arm-linux-androideabi-4.7和朋友)的预构建工具链.

stdlib.h3个API中有2个缺少它.例如,下面是针对API 17进行编译的尝试.

arm-linux-androideabi-gcc -I. -I.. -I../include  -DOPENSSL_FIPSCANISTER -fPIC -DOPENSSL_PIC
-DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -march=armv7-a
-mandroid -I/opt/android-ndk-r8e/platforms/android-17/arch-arm/usr/include
-B/opt/android-ndk-r8e/platforms/android-17/arch-arm/usr/lib -O3 -fomit-frame-pointer -Wall
-DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM
-DGHASH_ASM -c -o cryptlib.o cryptlib.c
In file included from cryptlib.c:117:0:
cryptlib.h:62:20: fatal error: stdlib.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

根据Auselen和Chris的反馈,我试图为API 17构建一个工具链.它失败了:

$ $ANDROID_NDK_ROOT/build/tools/make-standalone-toolchain.sh --platform=android-17 --install-dir=./android-testAuto-config: --toolchain=arm-linux-androideabi-4.6
Invalid platform name: android-17
Please use --platform=<name> with one of: android-14 android-3 android-4 android-5 android-8 android-9
Run Code Online (Sandbox Code Playgroud)

如何处理NDK中缺少的标题? …

java-native-interface android android-ndk

9
推荐指数
1
解决办法
7621
查看次数

如何到位更新Android NDK?

我曾经下载Android NDK,因为新版本已发布到devloper网站。

看来Google最近更新了开发者网站并删除了NDK的直接下载链接,并用一堆循环引用替换了它们,这些引用最终导致SDK的下载。SDK下载页面不包含NDK。我发现最接近下载和NDK的是“ 下载Android Studio和SDK工具”

运行$ sudo /opt/android-sdk-macosx/tools/android无法提供更新NDK的方法。

如何使用现有NDK或SDK工具之一在适当位置更新NDK?

或实际NDK的下载在哪里?


为了清楚起见,我从命令行使用antndk-build。我不使用Eclipse或Android Studio。Eclipse和Android插件已损坏;Android Studio并不真正支持NDK和JNI。

另外,由于我有点了解Eclipse,所以我真的不想学习其他编辑器,而且我已经知道如何从命令行进行操作(因此不需要编辑器)。

android android-ndk

6
推荐指数
1
解决办法
1万
查看次数