如何检查交叉编译器gcc工具链里是否有某个库(以zlib库和libpng库为例)

freetype 依赖于 libpng,libpng 又依赖于 zlib,所以我们应该:先编译
安装 zlib,再编译安装 libpng,最后编译安装 freetype。
但是,有些交叉编译器工具链里已经有 zlib库和freetype,所以我们需要确认下我们的gcc编译器工具链中有没有zlib库和libpng库,怎么看呢?

01-检查 GCC 编译器目录中是否包含 zlib 库

要检查 GCC 编译器目录中是否包含 zlib 库,可以按以下步骤操作:

假设gcc编译器的目录如下:

/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/

方法 1:查找 zlib 相关文件

可以在编译器目录下搜索 libz.* 文件,这是 zlib 库的文件名格式。

执行命令:

find /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot -name "libz.*"
  • 结果解读
    • 如果找到类似 libz.solibz.alibz.so.x.x.x 的文件,说明存在 zlib 库。
    • 如果没有找到,说明可能没有安装该库。

运行结果如下:

book@100ask:~$ find /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot -name "libz.*"/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libz.so.1.2.11
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libz.so.1
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libz.so
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/lib/libz.so.1.2.11
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/lib/libz.a
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/lib/libz.so.1
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/lib/libz.so

显然,有zlib库的相关动态文件和静态文件,说明有zlip库。


方法 2:查看是否包含 zlib 头文件

zlib 的头文件通常是 zlib.h。可以通过以下命令搜索:

find /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot -name "zlib.h"
  • 结果解读
    • 如果找到 zlib.h,通常表明支持 zlib。
      运行结果如下:
book@100ask:~$ find /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot -name "zlib.h"/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include/zlib.h
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtZlib/zlib.h
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/include/zlib.h

从运行结果可知,有相应的头文件,所以zlip库存在。


方法 3:编译测试程序

尝试编译一个使用 zlib 的测试程序,以验证编译器是否支持 zlib。

测试程序:

#include <zlib.h>
#include <stdio.h>int main() {printf("ZLIB version: %s\n", zlibVersion());return 0;
}

在这里插入图片描述
编译命令:

arm-buildroot-linux-gnueabihf-gcc -o test_zlib test_zlib.c -lz
  • 结果解读
    • 如果编译成功并运行正常,说明支持 zlib。
    • 如果失败,可能需要安装 zlib 库或调整库的路径。

编译成功,如下图:
在这里插入图片描述
说明有zlib库。

注意:这个生成的可执行文件不能在Ubuntu中运行,因为它是在ARM平台上运行的。


02-检查 GCC 编译器目录中是否包含 libpng 库

要检查你的 GCC 工具链中是否包含 libpng 库,可以按以下步骤进行操作:


方法 1:查找 libpng 文件

libpng 的库文件通常以 libpng 开头。你可以直接在工具链目录中搜索它的库文件。

执行命令:

find /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot -name "libpng*"
  • 结果解读
    • 如果找到类似 libpng.solibpng.alibpng16.so.x.x.x 的文件,说明存在 libpng 库。
    • 如果没有找到,说明可能没有安装该库。

运行结果如下:

book@100ask:~$ find /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot -name "libpng*"/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/bin/libpng-config
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/bin/libpng16-config
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/share/man/man3/libpng.3
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/share/man/man3/libpngpf.3
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libpng16.so.16.37.0
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libpng16.la
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/pkgconfig/libpng.pc
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/pkgconfig/libpng16.pc
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libpng.so
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libpng16.so.16
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libpng16.so
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libpng.la
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include/libpng16
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/libpng-config
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/libpng16-config
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/share/man/man3/libpng.3
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/share/man/man3/libpngpf.3
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/lib/libpng16.so.16.37.0
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/lib/libpng16.la
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/lib/pkgconfig/libpng.pc
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/lib/pkgconfig/libpng16.pc
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/lib/libpng.so
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/lib/libpng16.so.16
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/lib/libpng16.so
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/lib/libpng.la
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/include/libpng16

从上面的运行结果来看,存在libpng的相关动态库和静态库,所以存在libpng库。


方法 2:查找 libpng 的头文件

libpng 的头文件通常是 png.hpngconf.h,它们可以用来判断是否有 libpng

搜索命令:

find /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot -name "png.h"
find /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot -name "pngconf.h"
  • 结果解读
    • 如果找到这些头文件,说明存在 libpng 的开发支持。

运行命令:

find /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot -name "png.h"

的结果如下:

book@100ask:~$ find /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot -name "png.h"
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include/png.h
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include/libpng16/png.h
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/include/png.h
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/include/libpng16/png.h

可见,有libpng库的头文件,所以有libpng库。


方法 3:使用编译器测试 libpng

尝试编译一个简单的使用 libpng 的测试程序来确认。

测试程序:

#include <png.h>
#include <stdio.h>int main() {printf("libpng version: %s\n", png_libpng_ver);return 0;
}

在这里插入图片描述

编译命令:

arm-buildroot-linux-gnueabihf-gcc -o test_png test_png.c -lpng
  • 结果解读
    • 如果编译成功并运行正常,说明工具链中支持 libpng
    • 如果失败,可能需要安装 libpng

编译结果如下:
在这里插入图片描述
这充分说明这个交叉编译工具链里有libpng库。注意:这个生成的可执行文件不能在Ubuntu中运行,因为它是在ARM平台上运行的。


03-附zlib库和libpng库的源码下载地址

如果没有zlib库和libpng库,则两个库的源码如下:
zlib库的源码下载链接:
https://pan.baidu.com/s/1Mn7AZZbXGJm-ajK04-zK3w?pwd=cmkv
libpng库的源码下载链接:
https://pan.baidu.com/s/10MG29Bw1-H88NkKlc-Aydw?pwd=kgbu

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySql详细教程-从入门到进阶(超实用)

基础篇 通用语法及分类 DDL: 数据定义语言&#xff0c;用来定义数据库对象&#xff08;数据库、表、字段&#xff09;DML: 数据操作语言&#xff0c;用来对数据库表中的数据进行增删改DQL: 数据查询语言&#xff0c;用来查询数据库中表的记录DCL: 数据控制语言&#xff0c;用…

Burp炮台实现(动态ip发包)

基本步骤 1.使用 zmap 爬取大量代理ip 2.使用py1脚本初步筛选可用ip 3.利用py2脚本再次筛选对目标网站可用ip&#xff08;不带payload安全检测&#xff09; 4.配置 burp 插件并加载收集到的代理池 5.加载payload&#xff0c;开始爆破 Zmap kali安装 sudo apt update apt …

海外招聘丨 苏黎世联邦理工学院—机器学习在社会和政治科学中的应用博士后

雇主简介 苏黎世联邦理工学院是世界领先的科技大学之一。我们以优质的教育、尖端的基础研究和将新知识直接转化为社会而闻名。来自 120 多个国家的 30,000 多名学生认为我们的大学是一个鼓励独立思考和激励卓越的环境的地方。 我们位于欧洲中心&#xff0c;但与世界各地建立联…

【微信小程序】3|首页搜索框 | 我的咖啡店-综合实训

首页-搜索框-跳转 引言 在微信小程序中&#xff0c;首页的搜索框是用户交互的重要入口。本文将通过“我的咖啡店”小程序的首页搜索框实现&#xff0c;详细介绍如何在微信小程序中创建和处理搜索框的交互。 1. 搜索函数实现 onClickInput函数在用户点击搜索框时触发&#x…

VS Code AI开发之Copilot配置和使用详解

随着AI开发工具的迅速发展&#xff0c;GitHub Copilot在Cursor、Winsuf、V0等一众工具的冲击下&#xff0c;推出了免费版本。接下来&#xff0c;我将为大家介绍GitHub Copilot的配置和使用方法。GitHub Copilot基于OpenAI Codex模型&#xff0c;旨在为软件开发者提供智能化的代…

表达式语句、复合语句和空语句

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;表达式语句、复合语句和空语句 发布时间&#xff1a;2024.12.26 隶属专栏&#xff1a;C语言 目录 1. 表达式语句定义作用常见类型赋值语句函数调用语句 2. 复合语句定义作用变量作用域 3. 空语句定义作用 1. 表达式…

数学建模助力干细胞研究,配体纳米簇如何影响干细胞命运

大家好&#xff01;今天来了解一篇关于对干细胞行为的可逆调控的研究——《Modularity-based mathematical modeling of ligand inter-nanocluster connectivity for unraveling reversible stem cell regulation》发表于《Nature Communications》。这项研究利用图论对细胞外基…

HTMLCSS:超炫丝滑的卡片水波纹效果

这段代码创建了一个卡片&#xff0c;卡片上有三个波动效果&#xff0c;这些波动效果通过 CSS 的keyframes 动画实现&#xff0c;创建了一个旋转的动画效果。这种效果适用于创建动态的视觉效果&#xff0c;例如音乐播放器的封面、动态背景或其他需要动态效果的界面元素。 演示效…

pytorch MoE(专家混合网络)的简单实现。

专家混合&#xff08;Mixture of Experts, MoE&#xff09;是一种深度学习模型架构&#xff0c;通常用于处理大规模数据和复杂任务。它通过将输入分配给多个专家网络&#xff08;即子模型&#xff09;&#xff0c;然后根据门控网络&#xff08;gating network&#xff09;的输出…

K8s证书过期

part of the existing bootstrap client certificate is expired: 2023-11-27 12:44:12 0000 UTC 查看运行日志&#xff1a; journalctl -xefu kubelet 重新生成证书&#xff1a; #重新生成证书 kubeadm alpha certs renew all #备份旧的配置文件 mv /etc/kubernetes/*.conf…

B端UI设计规范是什么?

一、B端UI设计规范是什么&#xff1f; B端UI设计规范是一套针对企业级应用界面设计的全面规则和标准&#xff0c;旨在确保产品界面的一致性、可用性和用户体验。 二、B端UI设计规范要素说明 B端UI设计的基本要素包括设计原则、主题、布局、颜色、字体、图标、按钮和控件、交互…

记录一次前端绘画海报的过程及遇到的几个问题

先看效果 使用工具 html2canvas import html2canvas from html2canvas// 绘画前的内容 我就不过多写了<div class"content" ref"contentRef" v-show"!imgShow"><img :src"getReplaceImg(friendObj.coverUrl)" alt"&qu…

mysql性能问题排查

生产环境 Mysql执行性能分析 问题排查思路通过 performance_schema 分析performance_schema 说明查询 performance_schema 所有表信息performance_schema 相关表 主要相关介绍events_statements_history 分析慢查询 和查询当时状态字段说明 问题排查思路 查询慢SQL日志查询SQL…

Jensen-Shannon Divergence:定义、性质与应用

一、定义 Jensen-Shannon Divergence&#xff08;JS散度&#xff09;是一种衡量两个概率分布之间差异的方法&#xff0c;它是Kullback-Leibler Divergence&#xff08;KL散度&#xff09;的一种对称形式。JS散度在信息论、机器学习和统计学等领域中具有广泛的应用。 给定两个概…

安全合规遇 AI 强援:深度驱动行业发展新引擎 | 倍孜网络CEO聂子尧出席ICT深度观察报告会!

12月24日&#xff0c;2025中国信通院深度观察报告会科技伦理与合规发展分论坛在北京举办。本次分论坛主题为“伦理先行&#xff0c;合规致远”&#xff0c;聚焦互联网广告合规治理、移动终端应用生态治理、短视频平台责任限度等前沿话题进行分享与探讨。工业和信息化部领导&…

harmony数据保存-数据持久化

preference的介绍 preference的使用 数据库 sqlite的使用 可以写sql语句用executsql进行增删改查. 也可以使用提供的接口&#xff08;insert&#xff0c;delete&#xff0c;update&#xff0c;query&#xff09;进行增删改查。

解锁高效密码:适当休息,让学习状态满格

一、“肝帝” 的困境 在当今竞争激烈的职场中&#xff0c;“肝帝” 现象屡见不鲜。超长工时仿佛成为了许多行业的 “标配”&#xff0c;从互联网企业的 “996”“007”&#xff0c;到传统制造业的轮班倒、无休无止的加班&#xff0c;员工们的工作时间被不断拉长。清晨&#xff…

c/c++ 无法跳转定义

背景 对于嵌入式开发离不开交叉编译工作&#xff0c;采用vccode远程到虚拟机开发来说&#xff0c;总会遇到一个函数跳转问题。下面针对运用开发如何设置vscode保证函数能正确跳转大函数定义。 一、安装c/c插件 安装C/C Extension Pack插件&#xff0c;这插件包含有几个插件。…

福特汽车物流仓储系统WMS:开源了,可直接下载

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。欢迎大家到本文底部评论区留言。 近日&#xff0c;福特汽车公司推出了其广受好评的仓库管理系统GreaterWMS&#xff08;更大仓库管理系统&#xff09;的开源版本&#xff0c;意味着各行…

去除 el-input 输入框的边框(element-ui@2.15.13)

dgqdgqdeMac-mini spid-admin % yarn list --pattern element-ui yarn list v1.22.22 └─ element-ui2.15.13 ✨ Done in 0.23s.dgqdgqdeMac-mini spid-admin % yarn list vue yarn list v1.22.22 warning Filtering by arguments is deprecated. Please use the pattern opt…