团队当前承接各类小程序开发项目,安卓移植项目,APP开发,JAVA web开发,有需要合作的找明哥。

最近在给一个客户处理编译问题,最终编译出来的so库,运行时候出错,出错信息如下:

网上找了下,都说是NDK版本不对,但实际上我验证下来NDK是匹配的,出错的原因是别的,这一节就来分析下怎么处理这类问题。

这类问题出现,第一步先确认下这个符号是否在so库里面:

objdump -t xxx.so >~/log.txt ,查看文件,可以确定确实被so库引用了,这里标记的UND意思是,这个方法是由外部提供的,需要加载器在加载时候帮我找到,如果找不到,就出现我们的cannot locate symbol "__register_atfork"。

我们判定出来是一个外部引用,那么第二步就是判定这个是在哪里:

我们在源码和NDK目录搜索,最后发现这个东西存在于libc这种库里面,而libc这个是源码编译的,而且这里搜索出来的,android-23以上的libc.so有,以下版本没有。

而我们的板子是android 5.1,巧的是API 级别:22 ,也就是5.1的libc里面是没有这个方法的,所以启动的时候报了这个错误。

问题的分析结论就是:NDK的编译使用的API值,跟板子的不匹配,而不是所谓的跟AS环境不匹配。

到这里还不算结束,因为还没找到libc.so 对应的这个定义地方,于是我这边再找了下这个,确认分析没问题。

去 androidxref.com 点击http://androidxref.com/9.0.0_r3/ ,搜索:__register_atfork

我们展开来看下,就知道为什么5.1之前会出错了。

终于找到了原因,同时也定位出来了,这里主要是

__ANDROID_API__ >= __ANDROID_API_M__

而我们在项目里面,默认没有定义这个值,导致的结果就是__ANDROID_API__ 会被定义成

而关于这个项目中,如何打印出编译过程的一些定义值呢?不晓得有多少人知道,可以先研究下,后面我会给出答案。

所以我们需要在编译的Makefile文件里面,定义这个值 CFLAGS+=-D__ANDROID_API__=22

从而让编译引用22的库,最终在目标板子就可以顺利跑起来了。

不知道你在真正处理问题的时候,会分析到哪个阶段呢?

1 只解决问题,不追求原因

2 追求原因

3 找到原因输出文档

4 找到核心点,做出推演这一类问题的解决思路

今天就说到这里了,喜欢别忘记转发~

~~~~~~~~~~~~~~~~~~end~~~~~~~~~~~~~~~~~~

最近有过来咨询安卓学习的朋友,贴了一些网上的教程,讲了一堆三方库的使用,以及常见控件的使用,这些在我这边不会细讲的,原因很简单,这个玩意就不是能力,培训这个纯粹是拼课程而已,没营养。

我的课程讲完,你学到的是:

1 如何去使用常见控件

2 如何自定义控件,原理是什么,整体框架是什么

3 系统怎么跑起来的,具体逻辑怎么理解

4 虚拟机是什么,代码位置,编译过程,加载过程

。。。。。。。。。。。

更多的内容,可以参看:

原创PDF |《Android 深入系统完全讲解》,可能价值百万!

暂时没折扣了,不用再问了。之前的3999都能感受到物超所值,因为辅导成长显而易见。

如果想尝鲜,可以咨询一次699,来给你把脉,我会依据你的能力栈,给你一个精准的辅导,助力你飞跃。后续报名全课程,直接抵1000.

最近咨询C语言的人比较多,同时最近也在准备系列视频课程,同时开设1V1的讲解,如果需要C语言的指导,可以联系我,我的微信 code_gg_boy 。

课程简单来讲,围绕这些,关于语法什么的,这些基础的东西,会让你去练习,遇见问题我来答疑,辅导的核心是解决理解上的所有障碍,这个才是真正要掌握的。

1 为什么学习c?

2 C语言相关知识体系

3 工具环境搭建

4 源码到可执行文件经历了哪些步骤?

5 程序又是怎么被加载运行的?

6 静态库与动态库的设计原理以及应用

7 计算机世界的映射以及抽象模型

8 C语言的指针与函数关联是什么

9 如何透彻的理解指针

10 C标准库路径以及学习路线指南

11 如何实现一个项目的开发过程?

课程当前安排表:

1 C语言简单介绍

2 环境设置,如何搭建,windows 和Linux 下的操作

3 程序结构,主要组成部分

4 基础语法

5 变量和常量

6 基础数据类型

7 运算符

8 条件,循环

9 作用域

10 头文件的引用

11 枚举

12 存储

13 堆与栈

14 作用域

15 字串

16 结构体和共用体

17 预处理,宏定义

18 文件操作

19 指针,函数指针

20 可变参数

21 递归,库的引用

22 实战项目开发(坦克大战)

--end--

今天分享一些整理的书单,关于C语言的,看这些书就足够学懂C语言了。关于操作系统相关内容,我们后续再来分享。

获取方式, 后台回复 我要学C语言  ,领取链接。

C语言练习项目源码:

获取方式, 后台回复 我要学C语言  ,领取链接。

抖音项目,全集100T内容,各类玩法,拍摄技巧,网络整理搜集!

计算机书籍一网打尽

热门文章

零基础新手自学Python编程教程入门精通学习资料网站大全

自学编程C语言不迷路,我私藏的书单分享给你!

零基础新手学习算法Leetcode刷题指南

程序员码农IT工程师自学编程计算机入门进阶学习网站大全

程序员面试题宝典以及相关书籍下载!

计算机类常用电子书整理大全

职场老鸟,互联网十年从业生涯,分享 [Java,Python,安卓,AI,爬虫] 技术文章,学习资料, 热点趣闻等。关注回复 1024 Python 电子书大全 面试资料,给你一份私藏的程序员好礼,永远更新中!赶紧来关注哦!

我的微信 code_gg_boy 。

Android NDK cannot locate symbol __register_atfork的一次经典定位分析~相关推荐

  1. Mastering Android NDK Build System - Part 1: Techniques with ndk-build

    This article is not a "Hello world!"-type tutorial for NDK. Although I will still provide ...

  2. Android NDK学习笔记1:基础

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119005718 本文出自[赵彦军的博客] 文章目录 (一)什么是Android N ...

  3. OpenCV android sdk配置OpenCV android NDK开发实例

    OpenCV android sdk配置OpenCV android NDK开发实例 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/det ...

  4. CMake 构建项目Android NDK项目基础知识

    本篇文章将介绍如何使用 CMake 构建实现你的第一个 NDK 项目. ##前言 你好!欢迎来到我的的学习笔记分享系列,第一次给大家分享的是 Android NDK 开发的学习笔记,让我们先开始了解 ...

  5. Android NDK开发: 通过C/C++调用第三方so库

    文章目录 一.编写so库代码 二.安装Android NDK 三.编译so库 3.1 编辑Android.mk 3.2 编辑Application.mk 3.3 编译 四.集成到Android工程中 ...

  6. Android NDK 中堆栈日志 add2line 的分析实践

    文章目录 目的 常用的辅助工具 分析步骤 参考 目的 Android NDK 中出现的 crash 日志分析定位,使用 addr2line 对库中定位so 动态库崩溃位置,定位到某个函数的具体的代码行 ...

  7. Android NDK 减少 so 库体积方法总结

    1. 背景 基于亚马逊 AVS Device SDK 改造的全链路语音 SDK 最终编译的动态库有几十个,单架构动态库大小有几十兆,之前在Iot设备中勉强跑着,但是这个体积对于手机应用来说是致命的,各 ...

  8. Android NDK(ndk-r16b)交叉编译FFmpeg(3.3.9)

    1.下载FFmpeg(3.3.9) ffmpeg官网:Index of /releases ffmpeg-3.3.9下载链接: http://www.ffmpeg.org/releases/ffmpe ...

  9. android NDK 之cmake的使用

    Android NDK 开发(五)AndroidStudio 2.2 NDK的开发环境搭建 标签: androidndkstudio2-2支持ndk开发ndk环境搭建 2016-10-25 14:40 ...

最新文章

  1. 架构周报| 浅析MySQL JDBC连接配置上的两个误区
  2. rsync文件同步、Inotify-tools参数详解
  3. 刚换工作,记录下心得
  4. dojo Quick Start/dojo入门手册--dojo.hitch scope/context
  5. 【白话科普】聊聊 DNS 的那些小知识
  6. 整型变量(int)与字节数组(byte[])的相互转换
  7. 阿里再破记录!代表中国企业首次在这项国际比赛中摘得银牌!
  8. android 应用程序 判断 ,如何判断Android应用程序是否正在前台运行?
  9. 【Pytorch神经网络基础理论篇】 01 从零开始介绍深度学习算法和代码实现
  10. (06)FPGA工程师能力
  11. 设计模式 可复用面向对象软件的基础_面向对象的可复用设计模式之简单工厂模式(1/24)...
  12. 企业信息化BI项目的整体思想和架构
  13. Android系统架构
  14. Ubuntu常见错误合集——持续更新
  15. 【运动学】基于Matlab模拟斜抛运动
  16. win11输入法关闭简繁切换热键,解决webstorm全局查询按键失效
  17. 计算机网络跳槽自荐信,计算机网络应用专业求职自荐信范文
  18. [iOS]判断ipa是否脱壳
  19. 数组中map遍历会改变原数组吗?
  20. 数据分析_python数据可视化(基于matplotlib+pandas)

热门文章

  1. mysql5.7分组排序
  2. 我昏迷了!被王者荣耀的AI吊打后,队友想了一个损招……
  3. onTouchEvent / MotionEvent(轨迹球事件、触摸屏事件、键盘事件)
  4. 关于热力图的一些细节汇总以及热力图参数详解
  5. JAVA位运算符的使用
  6. Feign与RequestMapping继承原理
  7. RPM 安装与卸载命令(转)
  8. 从事ocr识别算法票总管的冼健龙
  9. 吃鸡国际服服务器修复中,和平精英:一个月4套,皮肤上新最频繁的一个月!新皮肤有点熟悉...
  10. 【C语言】改版三子棋——电脑概率先手