linux下动态库的运用

这里写目录标题

  • 将头文件放入系统路径
  • 将.so动态库放入系统路径
    • 复制库文件:
    • 更新库缓存:
    • 验证安装:
  • 完成

将头文件放入系统路径

先将include内容放入/usr/local/include下,这里可以先在/usr/local/include创建一个mkdir hpdf 文件夹存放所有*.h

mv /your/include/path/include/*.h /usr/local/include/hpdf

将your/include/path换成你下载下来包中include的地址
在这里插入图片描述

tips:也可以不创建hpdf文件夹,直接mv到/usr/local/include下,两者用法区别如下所示
在这里插入图片描述
在这里插入图片描述

将.so动态库放入系统路径

要将库文件添加到/usr/local/lib中,你需要具有超级用户权限(通常使用sudo命令)。以下是将libhpdf.so及其相关文件复制到/usr/local/lib中的步骤:

复制库文件:

使用sudo命令将库文件从当前目录复制到/usr/local/lib。由于你可能有多个版本的库文件(例如,libhpdf.so,libhpdf.so.2.4,和libhpdf.so.2.4.4),你需要确保复制所有这些文件。

在这里插入图片描述

sudo cp libhpdf.so* /usr/local/lib/

这个命令会复制所有以libhpdf.so开头的文件到/usr/local/lib目录。

tips:查看是否是如下所示(如果不是则进行1.2步骤)
在这里插入图片描述

这里,libhpdf.so 和 libhpdf.so.2.4 是指向实际库文件 libhpdf.so.2.4.4 的符号链接。如果 libhpdf.so.2.4 是一个实际的库文件而不是符号链接,那么你可能需要重新考虑库文件的安装步骤。

  1. 重新创建符号链接:
    如果 libhpdf.so.2.4 不应该是一个实际的库文件,你需要删除它并重新创建正确的符号链接。使用以下命令:
sudo rm /usr/local/lib/libhpdf.so.2.4  
sudo ln -s /usr/local/lib/libhpdf.so.2.4.4 /usr/local/lib/libhpdf.so.2.4
  1. 同时确保 libhpdf.so 指向正确的版本:
sudo ln -s /usr/local/lib/libhpdf.so.2.4 /usr/local/lib/libhpdf.so

更新库缓存:

当新库文件被添加到/usr/local/lib时,你可能需要更新系统的库缓存,以便运行时链接器(如ld.so)能够找到这些新添加的库。在大多数Linux发行版中,你可以使用ldconfig命令来更新缓存。

sudo ldconfig

这个命令会重新生成库缓存,并扫描/usr/local/lib(以及其他几个标准目录)来添加新发现的库。

验证安装:

为了验证库是否已成功安装并可以被系统找到,你可以使用ldconfig -p命令来列出所有缓存的库,并检查libhpdf.so是否在其中。

ldconfig -p | grep libhpdf

如果一切正常,你应该能够看到与libhpdf相关的条目。在这里插入图片描述

  • 查看库文件是否存在:

首先,使用 ls 命令来列出 /usr/local/lib/ 目录下与 libhpdf 相关的文件。

ls /usr/local/lib/ | grep libhpdf

这个命令将列出所有包含 libhpdf 的文件名。你应该能看到类似 libhpdf.so、libhpdf.so.2.4 和 libhpdf.so.2.4.4 的文件。
在这里插入图片描述

  • 检查文件类型:

使用 file 命令来检查这些文件的类型,以确认它们是共享库文件还是符号链接。

file /usr/local/lib/libhpdf.so*

对于符号链接,输出应该类似于:

/usr/local/lib/libhpdf.so: symbolic link to libhpdf.so.2.4  
/usr/local/lib/libhpdf.so.2.4: symbolic link to libhpdf.so.2.4.4

对于实际的共享库文件,输出将显示文件是一个 ELF 共享对象。
在这里插入图片描述

  • 检查符号链接的目标:

如果 libhpdf.so 和 libhpdf.so.2.4 是符号链接,使用 ls -l 命令来查看它们指向哪个文件。

ls -l /usr/local/lib/libhpdf.so*

输出应该显示这些符号链接指向正确的库文件。
在这里插入图片描述

  • 确认库版本:

如果库文件安装了多个版本,你可能还想要确认安装的版本是否是你需要的版本。这通常可以通过检查文件名中的版本号来完成,或者通过运行某些工具(如 ldd 或程序本身)来查看它们链接到的库版本。

完成

以上都完成且正确后,则可以直接进入测试
在这里插入图片描述
在编译后面加上-lhpdf (库的名称也就是去掉lib和后缀—这里原名称为libhpdf.so)

直接编译完成在这里插入图片描述
./可执行程序即可生成

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

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

相关文章

一种驱动器的功能安全架构介绍

下图提供了驱动器实现安全功能的架构 具有如下特点: 1.通用基于总线或者非总线的架构。可以实现ethercat的FSOE,profinet的profisafe,或者伺服本体安全DIO现实安全功能。 2.基于1oo2D架构,安全等级可以达到sil3。 3.高可用性。单…

Pixel-GS:用于3D高斯溅射的具有像素感知梯度的密度控制

Pixel-GS: Density Control with Pixel-aware Gradient for 3D Gaussian Splatting Pixel-GS:用于3D高斯溅射的具有像素感知梯度的密度控制 Zheng Zhang  Wenbo Hu†  Yixing Lao   老宜兴市郑张文博胡 † Tong He  Hengshuang Zhao† 赵同和恒双 †1122113311 …

【oracle数据库安装篇一】Linux5.6基于LVM安装oracle10gR2单机

说明 本篇文章主要介绍了Linux5.6基于LVM安装oracle10gR2单机的配置过程,比较详细,基本上每一个配置部分的步骤都提供了完整的脚本,安装部分都提供了简单的说明和截图,帮助你100%安装成功oracle数据库。 安装过程有不明白的地方…

抖音视频无水印采集拓客软件|视频批量下载提取工具

抖音视频无水印批量采集拓客软件助力高效营销! 随着抖音平台的崛起,视频已成为各行各业进行营销的重要工具。但是,传统的视频下载方式往往效率低下,无法满足快速获取大量视频的需求。针对这一问题,我们开发了一款视频无…

【PDF.js】PDF文件预览

【PDF.js】PDF文件预览 一、PDF.js二、PDF.js 下载1、下载PDF.js2、在项目中引入3、屏蔽跨域错误 三、项目中使用四、说明五、实现效果 使用PDFJS实现pdf文件的预览,支持预览指定页、关键词搜索、缩略图、页面尺寸调整等等。 一、PDF.js 官方地址 文档地址 二、PD…

JVM、maven、Nexus

一、jvm简介 1.应用程序申请内存时出现的三种情况: ①OOM:内存溢出,是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。此时程序就运行不了,系统会提示内存溢出&#xff0c…

react query 学习笔记

文章目录 react query 学习笔记查询客户端 QueryClient获取查询客户端 useQueryClient异步重新请求数据 queryClient.fetchQuery /使查询失效 queryClient.invalidateQueries 与 重新请求数据queryClient.refetchQueries 查询 QueriesuseQuery查询配置对象查询的键值 Query Key…

最前沿・量子退火建模方法(1) : subQUBO讲解和python实现

前言 量子退火机在小规模问题上的效果得到了有效验证,但是由于物理量子比特的大规模制备以及噪声的影响,还没有办法再大规模的场景下应用。 这时候就需要我们思考,如何通过软件的方法怎么样把大的问题分解成小的问题,以便通过现在…

模型 洛萨达比例

系列文章 分享 模型,了解更多👉 模型_思维模型目录。积极和消极的平衡,左右着你们的关系。 1 洛萨达比例的应用 1.1 企业团队管理之洛萨达比例的应用 一个软件开发公司的团队经理注意到团队的士气和生产力有所下降。此时洛萨达比例是在2.9:…

故障诊断 | Matlab实现基于小波包结合鹈鹕算法优化卷积神经网络DWT-POA-CNN实现电缆故障诊断算法

故障诊断 | Matlab实现基于小波包结合鹈鹕算法优化卷积神经网络DWT-POA-CNN实现电缆故障诊断算法 目录 故障诊断 | Matlab实现基于小波包结合鹈鹕算法优化卷积神经网络DWT-POA-CNN实现电缆故障诊断算法分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现基于小波…

关于机器学习/深度学习的一些事-答知乎问(二)

进化算法与深度强化学习算法结合如何进行改进? (1)进化算法普遍存在着样本效率低下的问题,虽然其探索度较高,但其本质为全局随机性搜索,需要在整个回合结束后才能更新其种群,而深度强化学习在每…

Linux系统——Elasticsearch企业级日志分析系统

目录 前言 一、ELK概述 1.ELK简介 2.ELK特点 3.为什么要使用ELK 4.完整日志系统基本特征 5.ELK工作原理 6.Elasticsearch介绍 6.1Elasticsearch概述 6.2Elasticsearch核心概念 7.Logstash介绍 7.1Logstash简介 7.2Logstash主要组件 8.Kibana介绍 8.1Kibana简介 …

爬取学习强国视频小示例

因为需要爬取的视频数量并不是很大,总共需要将131个视频下载下来,所以就直接去手动找找视频的地址和名称保存下来的。由于页面是动态加载的,所以我们无法在网站源码中直接找到视频的超链接。设想是可以用Selenium模拟浏览器点击进行动态加载获…

Java基础(一)--语法入门

文章目录 第一章、语法入门一、Java简介1、JVM2、Java程序执行过程3、JDK4、JRE5、JDK、JRE和JVM三者关系 二、Java常量与变量1、标识符2、关键字3、保留字4、变量5、数据类型6、常量 三、运算符1、算术运算符2、赋值运算符3、关系运算符4、逻辑运算符5、条件运算符6、运算符的…

SpringMVC(一)【入门】

前言 学完了大数据基本组件,SpringMVC 也得了解了解,为的是之后 SpringBoot 能够快速掌握。SpringMVC 可能在大数据工作中用的不多,但是 SSM 毕竟是现在就业必知必会的东西了。SpringBoot 在数仓开发可能会经常用到,所以不废话学吧…

CSS盒模型(详讲)

目录 概述: 内容区(content): 内边距(paddingj): 前言: 设置内边距: 边框(border): 前言: 示例: 外边…

机器人路径规划:基于Q-learning算法的移动机器人路径规划,可以自定义地图,修改起始点,提供MATLAB代码

一、Q-learning算法 Q-learning算法是强化学习算法中的一种,该算法主要包含:Agent、状态、动作、环境、回报和惩罚。Q-learning算法通过机器人与环境不断地交换信息,来实现自我学习。Q-learning算法中的Q表是机器人与环境交互后的结果&#…

51单片机 DS1302

DS1302 实现流程 将提供的ds1302底层参考程序拷贝到工程下 注意在ds1302.c中可能硬件引脚没有定义,注意去看一下。还有头文件什么的在ds1302中记得加上 参考代码: #include "reg52.h" #include "ds1302.h"unsigned char Write_…

「 典型安全漏洞系列 」14.NoSQL注入漏洞详解

NoSQL注入是一个漏洞,攻击者能够干扰应用程序对NoSQL数据库进行的查询,本文我们将研究如何测试一般的NoSQL漏洞,然后重点研究如何利用MongoDB中的漏洞(MongoDB是最流行的NoSQL数据库)。 1. 什么是NoSQL注入 NoSQL注入…

AI大模型探索之路-实战篇:基于CVP架构-企业级知识库实战落地

目录 前言 一、概述 二、本地知识库需求分析 1. 知识库场景分析 2. 知识库应用特点 3. 知识库核心功能 三、本地知识库架构设计 1. RAG架构分析 2. 大模型方案选型 3. 应用技术架构选型 4. 向量数据库选型 5. 模型选型 三、本地知识库RAG评估 四、本地知识库代码落地 1. 文件…