编译可在Android上运行的依赖库(三):libffi库
本文在Ubuntu 64位系统上对libffi项目进行交叉编译。
下文中的"NDK"若无特殊说明均指"Android NDK"。
下载并安装Android NDK的过程在这里不做介绍。
2. 下载libffi到libffi的官网去下载这个库的源码。官网地址:https://sourceware.org/libffi/
3. 设置NDK和SYSROOT环境变量请参考编译可在Android上运行的glib库中相应的步骤。
注意:这里没有也不需要“创建NDK工具的软链接”这个步骤。
4. 运行configureCPP="arm-linux-eabi-gcc -E" CXXCPP="arm-linux-eabi-gcc -E" CPPFLAGS="-I${SYSROOT}/usr/include" ./configure --prefix="${SYSROOT}/usr" --host=arm-linux-androideabi CFLAGS="--sysroot $SYSROOT"
对./configure命令的解析请参考编译可在Android上运行的libiconv库中的相应步骤。
5. 编译和安装使用make命令编译源码,当编译成功是使用"make install"命令进行安装,libiconv将会被安装到${SYSROOT}/usr/lib目录下,在上文中"--prefix="${SYSROOT}/usr"命令选项就是用来指定安装的目录的。
注意:libffi库安装后的库文件被安装到"${SYSROOT}/usr/lib"目录下,头文件被安装到"${SYSROOT}/usr/lib/libffi-3.2.1/include"目录下,将"${SYSROOT}/usr/lib/libffi-3.2.1/include"目录下的头文件拷贝到"${SYSROOT}/usr/include"目录下。
作者:寻禹@阿里聚安全,更多技术文章,请点击阿里聚安全博客
阿里聚安全由阿里巴巴移动安全部出品,面向企业和开发者提供企业安全解决方案,全面覆盖移动安全、数据风控、内容安全、实人认证等维度,并在业界率先提出“以业务为中心的安全”,赋能生态,与行业共享阿里巴巴集团多年沉淀的专业安全能力。
聚安全平台 阿里聚安全是一个移动安全开放平台,凝聚阿里巴巴多年来在无线业务安全防御的成功经验和技术成果,并面向开发者和企业提供恶意代码检测、漏洞扫描、仿冒应用检测、应用加固、安全组件等服务,一站式解决应用的安全问题。
相关文章
- 我们也说说Android.mk(4) - 依赖:目标编程的模式
- Android依赖注入:Google Guice on Android的使用及相关资源
- android 关于插件包内的依赖版本不一致问题得解决
- 《Android进阶之光》--注解与依赖注入框架
- 【Android】不依赖焦点和选中的TextView跑马灯【2】
- Android Framework 保姆级开发学习路线,全套资料包开源分享
- Android开发卷吗?卷;怎么破?从Framework提升自己——字节总监
- Android问题笔记 - 还没解决CreateProcess error=206 文件名或扩展名太长的错误?
- android 11添加自定义系统服务,编译成jar包供上层使用
- Android date 命令设置系统默认时间
- 编译可在Android上运行的依赖库(四):llibiconv库
- Android app使用TextToSpeech实现文字转换语音
- Android 10.0 Settings 显示菜单增加选择屏幕密度选项
- Android 10.0修改recovery 菜单项字体大小
- Android平台MediaCodec实现对H264视频硬解码
- 【Android Gradle 插件】Gradle 基础配置 ④ ( Gradle Wrapper 配置作用 | Gradle 下载的依赖库存放位置 )
- 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )
- 【Android Gradle 插件】Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )
- 【Android Gradle 插件】工程根目录下 build.gradle 配置文件 ( 远程仓库配置 | 依赖配置 | 所有子模块配置 | task clean 任务 )
- 【Android 逆向】x86 汇编 ( push / pop 入栈 / 出栈 指令 | ret / retn 函数调用返回指令 | set 设置目标值指令 )
- 【Android 插件化】VirtualApp 接入 ( 在 VirtualApp 工程下创建 Module | 添加依赖 | 启动 VirtualApp 插件引擎 )
- Android开发最佳学习路线图
- Android audio切换设备通道流程(二十八)
- Android架构
- android做设计的每一个屏幕尺寸和分辨率(一个)
- android中actionbar使用示例
- Android 解决之依赖包中添加的com.android.support版本不同导致冲突的问题
- Xamarin.Forsm for Android 显示 PDF