首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从Android NDK 15切换到17会使malloc和朋友找不到

在Android NDK中,malloc是C/C++语言中用于动态分配内存的函数。在NDK 15版本中,malloc函数及其相关的函数是通过libc库提供的。然而,在NDK 17版本中,Google对NDK进行了一些改进,将libc库替换为了Bionic库。

Bionic库是Android系统专用的C库,它是基于BSD实现的,旨在提供更好的性能和更小的内存占用。由于Bionic库与传统的libc库有所不同,因此在切换到NDK 17版本后,可能会导致一些问题,其中之一就是malloc函数和相关函数找不到的问题。

为了解决这个问题,可以采取以下几个步骤:

  1. 检查代码中是否直接调用了malloc函数或相关函数。如果是,需要将其替换为Bionic库中提供的对应函数。例如,可以将malloc替换为bionic_malloc,free替换为bionic_free等。
  2. 检查是否使用了第三方库或框架,这些库或框架可能依赖于libc库中的malloc函数。如果是,需要查看它们是否已经更新到支持NDK 17版本的版本。如果没有,可以尝试联系库或框架的开发者,了解是否有相关的更新计划或解决方案。
  3. 如果以上步骤都无法解决问题,可以尝试在Android.mk或CMakeLists.txt文件中添加对Bionic库的链接。具体操作可以参考NDK文档或相关的开发者社区。

总结起来,切换从Android NDK 15到17版本可能会导致malloc函数和相关函数找不到的问题。解决这个问题的关键是替换代码中直接调用的malloc函数和相关函数,并确保使用的第三方库或框架已经更新到支持NDK 17版本。如果仍然存在问题,可以尝试在构建配置文件中添加对Bionic库的链接。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

xmake入门到精通5:Android平台编译详解

本文主要详细讲解如何通过xmake编译可在android下运行的库可执行程序。...项目源码 官方文档 准备工作 首先,我们需要先准备好编译android native库必须的ndk工具链,如果还没有可以官网下载解压即可:Android NDK 如果是为了获取更好的向下兼容性,可以选择...NDK集成编译 手动配置NDK 我们只需要将解压后ndk目录路径传递给xmake完成配置,可以直接编译了,例如: $ xmake f -p android --ndk=~/downloads/android-ndk-r19c...$ xmake 其中,-p android用于切换到android平台,因为如果不指定平台,默认会编译当前主机平台的target程序。...或者尝试ANDROID_NDK_HOME这种环境变量中探测,如果存在的话。 如果能探测到,也就没必要再额外手动配置了。

1.2K10
  • NDK开发_cwin配置+编程简单步骤

    源码中编译的,所以对于在eclipse中的ndk开发,其实记忆有点模糊了,包括 Android.mk的编写,都有点小区别吧。...后面在window上编译 so还得靠它; 2)android-ndk-*** ,这个的版本很多,也不清楚目前最新的版本是多少了,不过都没有太大的关系,我使用的 android-ndk-r8b,这个是提供了编译...4)完成了上面几步,我们就来看下有没有生效啦,ndk提供的demo就派上用场了,切换到 ndk 的samples目录,我这里测的是hello-jni, 切到hello_jni 目录下后,ndk-build...找不到Bitmap,那就是android.jar 没找到,ok, -classpath 指定下android.jar路径 ?...下面再相对应的修改下 jni目录下的Android.mk 需要编译的文件,就可以在cygwin中切到该jni目录下,ndk-build了 ?

    53630

    android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测

    刚开始,思路很清晰,然后便着手百度 android studio(下面简称 as) 的 opencv jni编程使用教程,十分遗憾,所能搜到的,关于 as opencv、jni 搭边的例子 几乎为0...刚动手的时候,很快地把所有装备工作都搞定了,.so 动态库文件(下面会介绍)也编译出来了,但是,就在此时,我遇到了一个 令我第一阶段底放弃的 bug!!        ...为 android-ndk-r10d(强烈建议使用 r9 或 r10 系列,因为这两个能在 cmd 中编译出 .so),r10d 能够支持的 android api 最高到 21,如果你的是 22 的请修改...3,准备工作 1,---ndk 的下载、安装配置,此部分不说,网上教程很多,很多可行。...4,---了解 Android.mk Application.mk 文件的基本内容信息:下面我使用默认的 Android.mk 来说明,和我的例子的 Application.mk 来说明。

    5.6K50

    Android NDK开发入门

    应用程序框架层 Android平台最常用的组件和服务都在这一层,是每个Android开发者必须熟悉掌握的一层,是应用开发的基础。...NDK NDK是什么 NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C C++ 代码的工具。...在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将soJava应用一起打包成apk。...NDK配置 创建NDK工程之前,请先保证本地已经搭建好了NDK的相关环境。依次选择【Preferences…】->【Android SDK】下载配置NDK,如下所示。...NDK 项目目录 打开新建的NDK工程,目录如下图所示。 我们接下来看一下,AndroidNDK工程普通的Android应用工程有哪些不一样的地方。

    1.6K50

    Android NDK 开发 | CMake 使用手册 - 初见篇

    CMake 这块知识是比较独立的,不止是 Android NDK 项目,一般的 C++ 项目也可以通过 CMake 进行构建。...为了更具有一般性,将在 Linux 环境中,通过 C++ 项目来介绍 CMake 的相关知识,当然这一也可以用于 Android NDK 项目中。...链接库的构建与集成 Android朋友应该对 so 动态链接库并不陌生,windows 的朋友对 dll 动态链接库也不陌生。其实两者本质上是类似的,只是在不同平台构建的产物不同罢了。...回首 Android NDK 中的 CMakeLists Android NDK 中的 CMakeLists C++ 项目中的并没有任何区别,都是用来构建项目的。...在 Android 项目构建过程中,会使ndk 通过 CMakeLists 来构建 C++ 相关的代码,如下可以看出,在构建产物中确实会存在构建的 .so 动态链接库。

    1.2K20

    Android OpenGL 做了一个修图(P 图)功能,对标 PS

    [Android OpenGL 实现 P 图功能] P 图功能与 OpenGL 玩过 P 图软件的朋友一定对这个功能有所了解,P 图我们可以简单地看做把一个区域的像素按照某一方向进行移动,产生一定形变效果...答案是, OpenGL 自带插值功能会使用周围的像素对被"掏空"的区域进行插值填充。...[OpenGL 实现 P 图功能] 如上图所示,BC 表示偏移方向偏移程度的向量,将圆内的所有像素按照向量 BC 的方向进行一定程度的偏移,像素偏移的强度,像素与圆心的距离相关,越靠近圆心强度越大。...18 + 13] = 1 - 2 * t1; (*ppVertices)[meshIndex * 18 + 14] = 0; (*ppVertices)[meshIndex * 18 + 15...= 2 * s1 - 1; (*ppVertices)[meshIndex * 18 + 16] = 1 - 2 * t1; (*ppVertices)[meshIndex * 18 + 17

    1.2K60

    熬过了互联网“寒冬”,接下来的金三银四你该怎么面试进BAT?

    现在上班犹如上坟一样,已经找不到半点成就感,每天各种烦心事,各种琐事永远做不到。 我们为什么会离职?无非就是以上两种原因:钱没给够,干的不开心,想换个环境。...今天给大家分享下我整理的Android架构面试专题及相关学习资料,其中大部分都是大企业面试常问的面试题,可以对照这查漏补缺,当然了,这里所列的肯定不可能覆盖全部方式,不过也希望能对即将找工作的朋友起到一些帮助...,机制是什么 13.多线程间通信多进程之间通信有什么不同,分别怎么实现 14.Android 屏幕适配 15.什么是 AIDL 以及如何使用 16.Handler 机制 17.事件分发机制...为什么 20.Android 中的动画有哪几类,它们的特点区别是什么 21.如何修改 Activity 进入退出动画 22.SurfaceView & View 的区别 23.开发中都使用过哪些框架...Android占比绝大部分为前提,所以Android NDK技术已经是我们必备技能了。

    54220

    Android 音视频开发打怪升级:FFmpeg音视频编解码篇】一、FFmpeg so库编译

    下载Android NDK AndroidNDK 已经迭代了很多版本,在 r17c 以后,Google正式移除 GCC ,不再支持 GCC ,新版本的 NDK 都是使用 CLANG 进行编译。...综上,解释了一些编译 FFmpeg 常用的配置选项,并且原理上弄明白为何要这样配置,基本上搞清楚了这些,想要组合两个不同版本的FFmpegNDK来编译,都会比较容易实现。...下载 Android NDK r17b 前面就说过,NDK r17c 以后,Googole 就移除了 GCC,所以要使用 GCC 只能下载 r17c 及以前的版本,本文使用 r17c 来编译。...NDK 相关的环境路径 NDK r17c 目录 NDK r20b 相比,NDK r17c的目录稍微有些变化。...交叉编译环境路径 # 库文件路径 android-ndk-r17c/platforms/android-21/arch-arm/usr/lib # 头文件路径 android-ndk-r17c/sysroot

    1.9K30

    Android监听自身卸载,弹出用户反馈调查

    1,情景分析         在上上篇博客中我写了一下NDK开发实践项目,使用开源的LAME库转码MP3,作为前面几篇基础博客的加深理解使用的,但是这样的项目用处不大,除了练练NDK功底。...这篇博客,我将讲述一下一个各大应用中很常见的一个功能,同样也是基于JNI开发的Android应用小Demo,看完这个之后,不仅可以加深对NDK开发的理解,而且该Demo也可以使用在实际的开发中。...以上几点看起来都无法实现这个功能,确实如此啊,单纯的Java层是做不到这一点的。...4,编译.so动态库        正如上篇博客写的那样,我们编写好了C源码之后,就需要使用ndk-build命令来编译成.so文件了,具体编译的过程也是非常简单的,在Eclipse中切换到C/C++编辑的手下...看到了,LOG输入日志跟代码流程是一致的,好了,源码在下面的链接下,有兴趣的朋友可以下载研究,欢迎你给我提出宝贵意见,大家一起学习一起进步!

    3K50

    Android | 迁移到搭载M1芯片的Mac时的问题

    现象 项目中使用了 NDK , 版本为 17,初次在 M1 电脑中编译时报错: Unknown host CPU architecture: arm64 Process 'command 'xx/xx.../Android/sdk/ndk/ 目录下,所以,将二者拼接即可得到完整的路径。...现象 在旧电脑中可以正常运行,但是迁移到新电脑之后,运行项目时一直提示找不到三方库的 .aar 文件,具体如下图: 该库的高版本可以正常获取,但是高版本中的 API 变更较大,切换后需要改的代码较多。...PictureSelector 库中有两个模块(model): picture_library ucrop,所以我们需要将这两个模块的 aar 文件都拷贝过来。...然后在 build.gradle 文件中删除 implementation 信息,如下图: 并声明需要解析 libs 目录中的 aar 文件,如下: 完成上述操作后,重新在新电脑中编译项目,一正常

    3.7K40

    技术解码 | 内存问题的分析与定位

    比如,虚函数表加载的虚函数地址异常,可以推出Connection对象异常,但问题未必出在Connection. 需要把思路拓宽,避免紧盯着crash的一行代码而找不到根本原因。...Studio中调试ndk代码见:https://developer.android.com/studio/debug 崩溃分析定位和解决内存问题是亡羊补牢,而在开发过程中,我们应当做到未雨绸缪。...top/htop 查看程序的内存占用变化趋势,可以发现一些大块的内存泄漏 malloc hook 在程序内对内存的使用做一个统计分析 AndroidLinux下都有提供: https://android.googlesource.com.../platforms/android-9/arch-arm" export CFLAGS="--sysroot=$ANDROID_NDK/platforms/android-9/arch-arm"...) if [ -f "$HERE/libc++_shared.so" ]; then # Workaround for https://github.com/android-ndk/ndk/

    4.3K21

    libuv在cocos2d-x中的使用

    libuv经过Node.js的实践应用,已经证明非常之成熟,本来之前项目用的是这个:clsocket https://github.com/DFHack/clsocket  当初选它的主要原因是它支持...iOS设备在关闭电源后,socket立马就断掉了,游戏后台切换到前台时需要能自动重连一次。...而libuv因为本身是用纯C实现的,它的回调方法基本上都是static函数,用C++封装的话有点小麻烦,网上也有人用C++11封装的比较好,可惜我使用的NDK版本比较低,支持不了C++11的特性只好放弃...stderr, "getaddrinfo callback error %s\n", uv_err_name(status));         return;     }     char addr[17.../libuv/include \ //目录自己依照自己的环境进行修改 一正常的话,在eclipse项目的obj目录下会看到编译成功后的文件 ?

    1.6K30

    Android Studio对ndk开发调试的支持前言支持版本对ndk-build的支持对CMake的支持

    前言 编写C/C++代码最大的痛苦就是语法提示调试,早期Android Studio对NDK不做支持或者支持得不够好,导致NDK开发异常缓慢,最大的问题是调试,经常一些崩溃问题需要反复的加日志排查。...然而现在Android Studio对NDK的开发调试都做了比较好的支持(仍然存在一些bug)。下面就来说一下如何进行配置。...支持版本 不太确定是哪个版本开始支持的,但我当前使用的版本能很好支持: Android Studio 2.2.3 gradle-2.14.1-all.zip //在gradle-wrapper.properties...对ndk-build的支持 如果项目之前使用ndk-build那一套编译方式,即需要Android.mk,那么只要在module下的build.gradle中稍加配置即可集成,例子如下: 1 apply...配置好ndk-build的参数 你同样可以在Android.mk的同级目录下放置Application.mk,配置依然会生效,比如在其中指定:APP_STL := stlport_static 关于Android.mk

    1.4K20
    领券