libpng编译-android端(libpng官网下载是没有android编译脚本)

libpng编译-android端(libpng官网下载是没有android编译脚本)

环境配置(mac的原理一样可以自己配置,我在linux编译)

配置ubuntu的ndk环境

1、执行 sudo vim /etc/profile,对Path的路径文件进行更改(如果vim系统没有安装的话,使用vi替换) 如果提示
在这里插入图片描述
在这里插入图片描述

export ANDROID_SDK=/home/shenjianbin/baoyu45585/android-ndk-r14b
export PATH=${PATH}:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
export ANDROID_NDK=/home/shenjianbin/baoyu45585/android-ndk-r14b
export PATH=$ANDROID_NDK:$PATH
export ANDROID_NDK_R14=/home/shenjianbin/baoyu45585/android-ndk-r14b

分别执行执行

source /etc/profile 
ndk-build -v

在这里插入图片描述

libpng-1.6.40编译

官网版本
libpng下载地址,可以点击选择自己版本

官网下载后版本已经删除多余文件和增加对应编译文件,已经可以直接用
libpng-1.6.40编译完整版下载
在这里插入图片描述

对应编译文件编写分别是Android.mk、Application.mk、build.sh,在对应终端可以执行./build.sh

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := libpng16


LOCAL_SRC_FILES :=\
	png.c \
	pngerror.c \
	pngget.c \
	pngmem.c \
	pngpread.c \
	pngread.c \
	pngrio.c \
	pngrtran.c \
	pngrutil.c \
	pngset.c \
	pngtest.c \
	pngtrans.c \
	pngwio.c \
	pngwrite.c \
	pngwtran.c \
	pngwutil.c \
	arm/arm_init.c \
	arm/filter_neon.S \
	arm/filter_neon_intrinsics.c \
	arm/palette_neon_intrinsics.c

# 设置头文件路径
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include

# 添加需要链接的库(如果有)
#LOCAL_LDLIBS := -lz

# 设置输出包含文件夹
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include


# 创建输出包含文件夹
$(shell mkdir -p $(LOCAL_PATH)/include)

# 拷贝所需文件到输出文件夹
$(shell cp $(LOCAL_PATH)/png.h $(LOCAL_PATH)/include)
$(shell cp $(LOCAL_PATH)/pngconf.h $(LOCAL_PATH)/include)
$(shell cp $(LOCAL_PATH)/pnglibconf.h $(LOCAL_PATH)/include)

include $(BUILD_STATIC_LIBRARY)

Application.mk

APP_OPTIM := release
APP_PLATFORM := android-18
APP_ABI := armeabi-v7a arm64-v8a x86_64 # or all
APP_MODULES := libpng16
NDK_TOOLCHAIN_VERSION=4.9
APP_PIE := false
APP_CFLAGS := -O3 -Wall -pipe \
    -ffast-math \
    -fstrict-aliasing -Werror=strict-aliasing \
    -Wno-psabi -Wa,--noexecstack \
    -DANDROID -DNDEBUG

build.sh

ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk

执行命令,会生成相应文件

./build.sh

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/401909.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python(23)——while循环

前言 在Python中,while 循环用于重复执行一段代码块,只要指定的条件保持为真(True)。一旦条件变为假(False),循环就会终止。while 循环通常用于在不知道循环将执行多少次的情况下进行迭代。 w…

linux下开发,stm32和arduino,我该何去何从?

linux下开发,stm32和arduino,我该何去何从? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「stm3的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共…

React 模态框的设计(一)拖动组件的设计

春节终结束了,忙得我头疼。终于有时间弄自己的东西了。今天来写一个关于拖动的实例讲解。先看效果: 这是一个简单的组件设计,如果用原生的js设计就很简单,但在React中有些事件必须要多考虑一些。这是一个系列的文章,…

Megalinter 初体验

简介 MegaLinter 是一个多语言、多工具的集成代码检查工具,它能够通过一个统一的工作流来运行多个静态代码分析工具,从而提供全面的代码质量检查。 官网:https://megalinter.io/latest/ MegaLinter 的特点: 多语言支持&#x…

深入理解指针(c语言)

目录 一、使用指针访问数组二、数组名的理解1、数组首元素的地址2、整个数组 三、一维数组传参的本质四、冒泡排序五、二级指针六、指针数组 一、使用指针访问数组 可以使用指针来访问数组元素。例如,可以声明一个指针变量并将其指向数组的第一个元素,然…

QT-模拟电梯上下楼

QT-模拟电梯上下楼 一、演示效果二、核心程序三、下载链接 一、演示效果 二、核心程序 #include "ElevatorController.h" #include <QGridLayout> #include <QLabel> #include <QGroupBox> #include <QGridLayout> #include <QPushButto…

2024「诺奖风向标」斯隆奖出炉:杨笛一、杜少雷、清华校友姜楠、北大校友金驰等入选​

今天&#xff0c;斯隆基金会公布了 2024年度斯隆研究奖&#xff08;Sloan Research Fellowship&#xff09;获得者名单&#xff0c;本次斯隆研究奖共颁发给了126 人&#xff0c;其中计算机科学领域 共有 7名华人学者当选。 包括斯坦福大学杨笛一&#xff08;上海交大ACM班校友…

2.5《Python3 网络爬虫开发实战》学习之实例实战1

目录 1 实战内容 2 确定思路 3 代码实操 3.1 实现一个个网页的爬取 3.2 爬取每一个网页的电影详情页url ​编辑 3.3 连接链接&#xff0c;针对每个详情页链接进行爬取、汇总内容 3.4 存储在txt文件中 4 结尾&#xff1a;整体代码 1 实战内容 爬取Scrape | Movie中所有…

24款奔驰S400L升级原厂360全景影像 效果分享

今天给大家分享一款 接近百万豪车 奔驰S400L商务版 连360 小柏林都没有&#xff0c;奔驰果然是不坑穷人的&#xff0c;所以很多车主一提到车就升级成豪华型的配置&#xff0c;你说五米多才的车 没有原厂360全景影像 是多么的难受 倒车和狭窄路段很麻烦&#xff0c;所以车主找到…

基于EasyCVR视频汇聚系统的公安网视频联网共享视频云平台建设思路分析(一)

随着社会的发展和科技的进步&#xff0c;视频监控系统在各个领域的应用越来越广泛&#xff0c;视频云平台建设已经成为了行业数字化转型的重要一环。公安网视频汇聚联网共享云的建设需要充分考虑技术、架构、安全、存储、计算等多方面因素&#xff0c;以确保平台的稳定性和可用…

基于ExtendSim的半导体制造工厂仿真

这是一个离散事件模型&#xff0c;使用ExtendeSim “高级资源管理&#xff08;ARM&#xff09;”功能来组织和分配资源。 此模型使用离散事件仿真和高级资源管理&#xff08;ARM&#xff09;功能。ARM是一个集成系统&#xff0c;用于组织资源、区分资源并在整个模型中分配资源。…

PHP实现分离金额和其他内容便于统计计算

得到的结果可以粘贴到excel计算 <?php if($_GET["x"] "cha"){ $tips isset($_POST[tips]) ? $_POST[tips] : ; $pattern /(\d\.\d|\d)/; $result preg_replace($pattern, "\t\${1}\t", $tips); echo "<h2><strong>数…

Linux离线安装插件

当公司Linux环境无外网情况下&#xff0c;需要先下载好离线安装包&#xff0c;然后上传到服务器&#xff0c;进行安装。 这里介绍一个下载插件安装包的网站&#xff0c;可以搜索到lrzsz、lsof、telnet、unzip、zip等安装包 搜索到想要的插件安装包后&#xff0c;下载并上传到服…

门控时钟基础知识

什么是门控时钟 RTL中的门控时钟 通常情况下&#xff0c;时钟树由大量的缓冲器和反相器组成&#xff0c;时钟信号为设计中翻转率最高的信号&#xff0c;时钟树的功耗可能高达整个设计功耗40%。 加入门控时钟电路后&#xff0c;由于减少了时钟树的翻转&#xff0c;节省了翻转功…

#LLM入门|Prompt#1.7_文本拓展_Expanding

输入简短文本&#xff0c;生成更加丰富的长文。 “温度”&#xff08;temperature&#xff09;&#xff1a;控制文本生成的多样性。 一、定制客户邮件 根据客户的评价和其中的情感倾向&#xff0c;使用大语言模型针对性地生成回复邮件。将大大提升客户满意度。 # 我们可以在…

分享6个当下最受欢迎的 Vue UI 库

在本文中&#xff0c;我列出了前 6个最受欢迎的&#xff08;根据 NPM 下载量和 Github stars&#xff0c;从上到下排名&#xff09;UI 库&#xff0c;供您启动您梦想中的 Vue 项目。 Vue.js 作为一个 JavaScript 框架&#xff0c;由于其简单、易用和学习曲线&#xff0c;是 Rea…

Facebook的未来蓝图:数字社交的下一个篇章

在数字化时代&#xff0c;社交媒体已经成为人们日常生活中不可或缺的一部分。而在众多的社交媒体平台中&#xff0c;Facebook一直处于领先地位&#xff0c;不断探索着数字社交的新领域和新形式。随着科技的不断发展和社会的不断变革&#xff0c;Facebook正在谱写着数字社交的未…

工业边缘网关的主要功能与应用价值分享-天拓四方

工业边缘网关&#xff0c;也称为工业物联网边缘计算网关&#xff0c;是一种部署在工业生产现场&#xff0c;具备数据采集、处理、存储和传输功能的智能设备。它能够将各种传感器、执行器、控制器等工业设备连接到网络&#xff0c;实现设备间的互联互通&#xff0c;同时提供边缘…

shapely 笔记 voronoi图

Voronoi 图是一种将平面分割成区域的方法&#xff0c;每个区域包含一个输入点&#xff0c;任何在该区域内的点都比其他输入点更接近该区域的输入点 1 基本使用方法 shapely.ops.voronoi_diagram(geom, envelopeNone, tolerance0.0, edgesFalse) 2 参数说明 geom任何几何类型…

船运物流管理系统|基于springboot船运物流管理系统设计与实现(源码+数据库+文档)

船运物流管理系统目录 目录 基于springboot船运物流管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员登录 2、货运单管理 3、公告管理 4、公告类型管理 5、新闻管理 6、新闻类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 …