
Android NDK交叉编译问题与解决策略
下载需积分: 50 | 896KB |
更新于2024-09-13
| 149 浏览量 | 举报
收藏
"NDK交叉编译问题小记主要涵盖了在使用JNA方式编译C/C++项目时遇到的问题及相应的解决策略,特别涉及到在arm-linux-androideabi工具链下进行交叉编译的常见困难。文档作者指出,对于Android API级别28及以上,需要在pthread.h文件中添加特定的pthread_attr_setinheritsched和pthread_attr_getinheritsched函数声明。此外,还提到了在Tools.cpp文件中修改__sched_priority为sched_priority,以符合新的编译器路径下的定义。另外,为了兼容性,abs函数被替换为fabs,并引入了<cmath>头文件。在文件处理方面,将条件判断fp=fopen(pic_name,"wb")<0改为了fp=fopen(pic_name,"wb")==NULL。对于时间相关的头文件,需要在调用全局头文件global.h时修改相应名称。在遇到libc6-dev、gettext安装或重装问题时,作者尝试了sudo apt-get install libc6-dev以及brew的相关操作,但未解决问题。最后,解决找不到sys/fcntl.h头文件的方法是使用find命令搜索NDK中的缺失文件位置。"
详细说明:
1. **pthread.h的修改**:在使用Android API级别28及以上时,由于系统接口的变化,需要在pthread.h中添加pthread_attr_setinheritsched和pthread_attr_getinheritsched的函数声明,这两个函数与线程调度属性有关。
2. **Tools.cpp的调整**:在Tools.cpp源码中,作者发现__sched_priority与新的androideabi编译器路径下的sched.h中定义的不一致,因此将其更改为sched_priority。
3. **数学函数转换**:原始代码中的abs函数在某些情况下可能不被支持,因此需要替换为标准库提供的fabs函数,并引入<cmath>头文件。
4. **文件操作改进**:当打开文件失败时,原代码使用的是fp=fopen(pic_name,"wb")<0来判断,但更标准的做法是使用fp=fopen(pic_name,"wb")==NULL来检查文件打开是否成功。
5. **头文件引用问题**:部分文件名需要根据实际情况进行调整,例如时间相关的头文件,以确保编译时能找到正确的引用。
6. **库安装和重装尝试**:作者尝试通过sudo apt-get install libc6-dev和brew命令来安装或重新安装库,但这些操作并没有解决问题,表明可能是其他原因导致的编译错误。
7. **缺失头文件的查找**:当遇到找不到sys/fcntl.h头文件的问题时,可以使用find命令在NDK目录下搜索,找到正确的位置并引用。
NDK交叉编译时可能会遇到各种问题,包括兼容性、函数声明、库依赖等,需要开发者具备对C/C++和Android NDK的深入理解,以便能够诊断并解决这些问题。文档中的解决方法为遇到类似问题的开发者提供了一定的参考。
相关推荐







DIANZI520SUA
- 粉丝: 1177
最新资源
- MATLAB设计FIR与IIR滤波器教程
- Java课程设计英文题目解析与JavaCMS应用
- PSPSDK头文件与示例教程:开发者的必备指南
- Visual Basic6.0中文版msdn完整安装包解析
- 构建ASP.NET下的高效权限管理框架
- 暴风影音推出全新Vista风格改进皮肤包
- C++构建学生成绩管理系统课程设计
- 修订版Marc数据查看工具:文件校验与拖放功能
- AHDL2硬件描述语言训练教程详解
- C语言编写Ping功能教程PDF下载指南
- Java开发入门:WebService服务端与客户端实践
- 高效管理:多功能凭证汇总表Excel工具解析
- Sql Assist 3.5:高效数据库开发的SQL自动提示工具
- MaxDOS v5.8s:增强版U盘DOS系统与多网卡驱动支持
- Qt3 C++ GUI编程:CHM转HTML在Linux下的应用
- 掌握jQuery切换元素技巧
- C# GDI+技术实现柱状和饼图绘制教程
- C语言开发的学生学习成绩管理系统
- .NET版HTML解析器Winista.HtmlParser的源码及DLL文件介绍
- 恶搞神器:整人专家VC++源码大揭秘
- VB实现的电脑定时关机重启小程序
- UltimateDefrag:绿色免费的高速磁盘碎片整理工具
- 深入探讨RichTextBox的扩展打印功能
- SQL Server实现整型与十六进制数字转换技巧