[✔️]ndk目录深入分析

简介: [✔️]ndk目录深入分析

这里以ndk-r14b举例,每个版本可能都有差异:


  • ndk-r14b


  • build


  • lib


  • build_support.py:各种arch cpu怎么配对


  • ndk-build: 命令的源头


  • ndk-build(linux) / ndk-build.cmd(windows):转向build/ndk-build


  • toolchains:各个平台编译工具链


  • llvm:LLVM是一套编译器基础设施项目,为自由软件,以C++写成,包含一系列模块化的编译器组件和工具链,用来开发编译器前端和后端。


  • platforms


  • android-9:支持的api level


  • arch-arm:不同的cpu架构


  • usr


  • include


  • xx.h: so库的头文件


  • lib


  • xxx.so:各种打包好的so库


  • arch-mips


  • arch-x86


  • android-11


toolchains


triples


architecture


EABI:Embedded Application Binary Interface(嵌入式应用程序二进制接口)


ABI:Application Binray interface


  • API:库的使用者可能需要去遵循这个接口规范,Add函数的参数个数以及参数类型等等。


  • ABI:main使用到了Add这个API,这个API包含再一个myso动态库里面,现在设计到一个符号寻找机制,即编译器需要去myso动态库里面寻找Add这个符号,那符号的命名规则不一致会导致什么结果?如gcc1.0版本的符号命名规则是再函数前面加一个_,即最后Add符号名称_Add, gcc2.0版本的符号命名规则是再函数后面加一个_, 即最后Add符号名称Add_。思考一个问题,myso是利用gcc1.0版本编译,main使用gcc2.0版本编译,会出现是什么问题? 编译器会提示你Add_符号未定义,这里说的符号导出规则也就是属于ABI兼容问题。


结论 :影响你API不兼容的可能是你使用的API新增了参数。影响ABI不兼容的可能仅仅就是编译器版本不同,一个是源码层面,一个是编译器层面(或者说二进制层面,即编译器生成的二进制), 当然编译器仅仅只是导致ABI不兼容的一个方面。



目录
相关文章
|
关系型数据库 MySQL 数据库连接
PHPStudy(小皮)V8.1 中使用cmd进入MySQL命令行模式
1、找到phpstudy_pro中的mysql可执行文件所在的位置(安装位置) 把这个路径进行复制:D:\phpstudy_pro\Extensions\MySQL5.7.26\bin image.png
2293 0
|
测试技术
|
传感器 监控 搜索推荐
智能服装:集成健康监测功能的纺织品——未来穿戴科技的新篇章
【10月更文挑战第7天】智能服装作为穿戴科技的重要分支,正以其独特的技术优势和广泛的应用前景,成为未来科技发展的亮点之一。它不仅改变了我们对服装的传统认知,更将健康监测、运动训练、医疗康复等功能融为一体,为我们的生活带来了更多的便利和可能。随着技术的不断进步和市场的日益成熟,我们有理由相信,智能服装将成为未来穿戴科技的新篇章,引领我们走向更加健康、智能、可持续的生活方式。
|
10月前
|
安全 Unix Linux
VMware Workstation 17.6.3 发布下载,现在完全免费无论个人还是商业用途
VMware Workstation 17.6.3 发布下载,现在完全免费无论个人还是商业用途
88960 65
|
10月前
|
人工智能 自然语言处理 安全
AI战略丨大模型时代,基金投顾AI应用探索
AI战略丨大模型时代,基金投顾AI应用探索
|
Oracle Ubuntu 关系型数据库
linux发行版对比
国内部分常用开源操作系统简要对比
562 5
|
监控 安全 搜索推荐
深度解析:国有企业数字化转型的背景、现状与思路
本文从国有企业在数字化大潮中的使命担当说起,对国有企业数字化转型现状进行思考,提出国企数字化转型思考框架及实现路径,并进一步对国有企业数字化典型场景及价值回报进行分析,提供典型国有企业数字化转型具体案例,供读者思考和实操参考。
|
开发工具 Android开发
Android studio历史版本下载
Android studio历史版本下载
6577 0
|
人工智能 JavaScript 开发工具
【完全免费】VS Code 最好用的 12 款 AI 代码提示插件!!!
🎉 探索12款免费VSCode AI代码提示插件:Codeium、Codegeex、CodeFuse、TONGYI Lingma、Comate、iFlyCode、Fitten Code、Bito AI、Mintlify Doc Writer、Kodezi AI、aiXcoder、IntelliCode。这些插件提供智能补全、代码生成、注释、优化,支持多种语言,提升编程效率!🚀👩‍💻👨‍💻
19950 0
|
Linux Shell 调度
介绍BootLoader、PM、kernel和系统开机的总体流程
介绍BootLoader、PM、kernel和系统开机的总体流程