开始用ndk编译so,出了几个问题,先整理一下。希望以后遇到的人能省些力气。
1.
dr@drBox:~/workspace/JniTest/jni$ ~/android-ndk-r6/ndk-build
Compile++ thumb : Test <= JniTest.cpp
/bin/sh: /home/dr/android-ndk-r6/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-g++: not found
make: *** [/home/dr/workspace/JniTest/obj/local/armeabi/objs/Test/JniTest.o] Error 127
这个错误是说找不到arm-linux-androideabi-g++,确实找不到,我从ndk r6中发现根本就没有linux-x86/文件夹,只有darwin-x86 gdbserver这两个文件夹,所以下载了最新的ndk r7b,幸好这里面有linux-x86文件夹,编译成功了。
dr@drBox:~/workspace/JniTest/jni$ ~/android-ndk-r7b/ndk-build
Compile++ thumb : Test <= JniTest.cpp
StaticLibrary : libstdc++.a
SharedLibrary : libTest.so
Install : libTest.so => libs/armeabi/libTest.so
2.当只改动Android.mk文件后需要编译,这时mm执行后会报如下提示:
============================================
make: Entering directory `/home/dr/android4.0.3'
make: Nothing to be done for `all_modules'.
make: Leaving directory `/home/dr/android4.0.3'
说明没有文件改动,拒绝编译。
那么解决办法可以是去稍微改动一下cpp等文件,加个空格也行。但是还有一种方便的方式就是
给cpp文件加时间戳:touch *.cpp
这样就可以继续编译了,所有cpp文件的时间都更新为最新了。
分享到:
相关推荐
标题"AS运用NDK编译及调用"涉及的知识点主要包括以下几个方面: 1. **Android Studio集成NDK**:Android Studio作为官方推荐的Android开发环境,已经集成了NDK支持。开发者可以在项目设置中配置NDK路径,使项目能够...
在Android平台上,利用NDK(Native Development Kit)编译wget项目是一个将开源的wget工具移植到Android设备上的过程。NDK允许开发者用C或C++编写原生代码,并将其集成到Android应用中,以实现高性能的计算或者利用...
在Android NDK环境下编译soxr,主要涉及以下几个步骤: 1. **获取源码**:从压缩包中解压`soxr-0.1.3-Source_android`,这是soxr库的源代码,包含了所有必要的头文件和源文件。 2. **设置NDK环境**:确保已经安装...
生成SO库的过程大致分为以下几个步骤: 1. **设置工程结构**:在Android Studio的`build.gradle`文件中配置NDK支持,添加`externalNativeBuild`部分,指定CMake或NDK-Build的构建脚本。 ```groovy android { ... ...
移植x264到Android时,还需要关注以下几个方面: 1. **异常处理和错误报告**:Android与桌面系统在异常处理和错误报告上存在差异,需要确保x264库中的错误处理机制适配Android环境。 2. **内存管理**:Android应用...
在Android NDK环境下移植`libiconv`,我们需要以下几个步骤: 1. **获取源码**:从给定的`libiconv-1.14.tar.gz`文件中解压出`libiconv`的源代码。这个版本的`libiconv`已经相当稳定,适合在各种平台上使用。 2. *...
在编译FFmpeg的过程中,开发者需要考虑以下几个关键步骤: 1. **配置FFmpeg**: 首先,需要下载FFmpeg的源代码并根据Android平台的特定需求进行配置。这可能涉及到选择要编译的组件,如解码器、编码器、过滤器等,...
在Android开发中,有时我们需要利用C或C++的性能优势...这个过程涉及到Android NDK开发、JNI编程以及Unity的插件集成,需要对这几个方面都有一定的了解。通过实践和调试,可以熟练掌握这一技术,提高应用的性能和功能。
描述中提到的“建立一个Android NDK工程”涉及到以下几个步骤: 1. **环境配置**:首先,你需要安装并配置Android SDK,其中包括设置SDK路径、添加必要的环境变量,如`JAVA_HOME`, `ANDROID_SDK_ROOT`, `PATH`等。 2...
编译过程主要分为以下几个步骤: 1. **获取源码**: 首先,你需要从官方仓库或者提供的压缩包(如"mp4v2-master")中下载MP4v2的源代码。解压后,你会看到项目的目录结构,包含源码文件、构建脚本等。 2. **配置...
关于"压缩包子文件的文件名称列表",虽然这里只给出了一个同名的压缩包,但通常这个压缩包会包含以下几个部分: 1. `lib`目录:存放预编译的.so文件,分为armeabi、armeabi-v7a、arm64-v8a、x86、x86_64等不同架构的...
FFmpeg 源码编译成 SO 文件的过程涉及以下几个关键步骤: 1. **环境准备**:首先,你需要一个配置了 NDK(Android Native Development Kit)的开发环境。NDK 提供了在主机上交叉编译 Android 应用所需的工具链。 2...
动态加载.so库是NDK开发中的一个重要技术,它使得应用程序在运行时按需加载库文件,而不是在安装时静态链接。这种方式可以减小APK的大小,提高应用程序的启动速度,以及便于更新和管理库文件。 Android系统提供了`...
首先,制作.so文件的过程分为几个步骤: 1. **创建jni目录**:在Android Studio项目中,新建一个jni目录(如果使用较新版本的AS,可能需要创建的是jniLibs目录)。 2. **编写C/C++代码**:在jni目录下,创建头文件...
这几天琢磨写一个Android的Runtime用来加速HTML5 Canvas,让GameBuilder+CanTK 不但开发速度快,运行速度也能接近原生应用。所以花了点时间研究Android NDK,网上的资料都是讲IDE里的编译方法,这里记录一下命令行下...
在 VNDK 编译系统中,供应商变体可以被分类为 VND-ONLY、VNDK、VNDK-SP 和 FWK-ONLY 等几种类型,每种类型都有其特定的用途和安装路径。例如,供应商变体为 VND-ONLY 时,共享库将安装到 /vendor/lib[64] 中;供应商...
最后,执行Gradle构建,`ndkBuild`任务会自动调用NDK编译原生代码,并将生成的.so库文件放入`app/src/main/jniLibs`目录下,与应用打包在一起。 总结来说,安卓NDK配置主要包括以下几个步骤: 1. 创建Java类并声明...
4. **使用NDK编译原生代码**:通过CMake或ndk-build脚本编译.so库文件,然后在Android应用中引用。 四、原生代码开发与调试 使用NDK开发原生代码,通常涉及以下过程: 1. **编写C/C++代码**:创建源文件夹结构,...
在实际开发中,使用NDK有以下几个关键步骤: 1. **配置环境变量**:安装NDK后,需要将NDK的路径添加到系统环境变量,以便命令行工具可以找到。 2. **创建工程结构**:根据NDK的构建规则,创建一个包含jni目录的...