库文件简述

article/2025/8/18 13:31:04

什么是库文件?
库就是一组预先编译好的方法的集合。在linux系统中,库文件一般被存储在/lib和/usr/lib中,库的头文件一般会被存储在/usr/include下。
库文件可以分为静态库和共享库两种。

静态库的命名规则为libxxx.a,共享库的命名规则为libxxx.so。

静态库和共享库生成的第一步都是先将需要生成库的“.c”文件编译成为“.o”文件;
之后的步骤命令各有各的不同:
静态库的命令为:ar crv libfoo.a add.o max.o(这里假设静态库的名称为foo,需要编译的两个文件名分别为add和max,稍后我会给出实例)

该命令具体解释如下:
ar 就是将.o文件生成静态库的命令
c 是创建库
r 是将方法添加到库中
v 是显示过程
后面跟的就是库的名称和需要的.o文件名称。

共享库的命令为:gcc -shared -fPIC -o libfoo.so add.o max.o

该命令具体解释如下:
该命令需要使用gcc命令
-shared 该选项指定生成动态连接库,不用该标志外部程序无法连接,相当于一个可执行文件。
-fPIC 表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的,所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,达不到‘共享’的目的。

接下来通过实例来展示这两种库怎样使用。

这是简单的add函数实现

这是简单的max函数实现

接下来我们把这两个.c文件编译成.o文件
在这里插入图片描述
函数的调用需要使用头文件实现函数的声明在这里插入图片描述
先将二者形成静态库
在这里插入图片描述
接下来编写main函数实现二者的调用在这里插入图片描述
编译并运行main函数在这里插入图片描述
我们发现这时编译没有通过,因为这时候主函数在编译链接时找不到add和max的位置,这时候我们需要使用 命令
gcc -o main main.c -L. -lfoo
来编译,-L后接库函数的位置,-l后接库函数的名称
在这里插入图片描述
我们可以看到生成了可执行文件main,执行结果如下
在这里插入图片描述
现在我们把库函数删除,再执行main程序在这里插入图片描述

可以看到程序仍然运行成功。

下面我们使用共享库
在这里插入图片描述
接下来编译链接生成main可执行程序
在这里插入图片描述
可以看到仍然需要在编译命令后加上-L和-l
接下来执行在这里插入图片描述

执行失败
我们将库函数移动到/usr/lib下,将头文件移动到/usr/include下,需要注意我们需要切换管理员权限来进行这个操作,在ununtu系统下使用sudo su切换管理员,在红帽子和cent os下使用su切换
在这里插入图片描述
运行成功!
这时候我们把库函数删除再次运行main程序在这里插入图片描述
这时候可以看到运行时失败,这是因为静态库和共享库的主要区别在于:
使用静态库链接时将用到的方法包含到了最终生成的可执行程序中,而共享库不包含,只做标记,在运行程序时才会动态加载。所以把静态库删除后不影响程序运行,而删除共享库则会。这个不同也引发出一些其他的不同,比如使用静态库生成的可执行程序是比使用共享库生成的可执行程序所占内存空间更大;当更新库文件时,使用静态库的程序需要重新编译链接,使用共享库的程序则不需要。
c语言的标准库使用的都是共享库,如下图所示在这里插入图片描述


http://chatgpt.dhexx.cn/article/6ZQRs3it.shtml

相关文章

六、库文件

今天我们来了解一下库文件,主要有以下几个内容: 文章目录 一、库文件概念二、静态库(一)生成&&使用(二) 示例(三) 特点 三、动态库(一)生成&&am…

库文件

目录 库文件 静态库 动态库(共享库) 静态库和共享库的区别 库文件 库文件是预先编译好的方法的集合。 比如:我们提前写好一些数据公式的实现,将其打包成库文件,以后使用只需要库文件就可以,而不需要重…

EDID 修改

EDID 128字节(不包括扩展),如果手动修改的话比较麻烦(最后一个字节校验和必须自己计算–128字节和为0),借助第三方工具比较好。 比如: SoftMCCS Phoenix EDID Designer EDIDManager EDIDViewer等。 如果只要修改制造商代号,…

EDID参数介绍

1、显示器的第24个字节是设置显示器的电源管理标准的。 各个位的作用如下,注意到标号为1的位是关于主画面。 3、Gamma源于CRT的响应曲线,即反映显像管的图像亮度与输入电子枪的信号电压的非线性关系的一个参数。对于CRT显示器而言,显像管电子…

EDID文件格式转换工具介绍

EDID文件格式转换工具介绍 1 EDID文件 简单来说,EDID文件主要内容就是128个字节数据(V1.3版本)或是256个字节数据(V1.4版本)。   但是不同的EDID的编辑工具支持的文件格式又不同,例如Phoenix EDID Desig…

EDID含义浅析

SoftMCCSEDID 开头(HEADER) 开头八个字节为EDID的开始标志,简称头,固定为:制造商和产品ID 这十个字节表示产品(MONITOR)ID和制造商信息。详细如下:EDID版…

display:dp:edid/e-edid/displayid

名词 EDID Extended Display Identification Data (Legacy VESA structure, superseded by the DisplayID structure).E-EDID Enhanced Extended Display Identification Data (Legacy VESA structure, superseded by the DisplayID structure).DisplayID Displa…

如何获取显示器的EDID信息

来源:http://wenku.baidu.com/view/8f82728471fe910ef12df8f4.html Q1: 为什么要写这篇文章? A1:在最近的工作中遇到了不少问题,其中很多都是和EDID相关的。可以说,作为一家以“显示”为生的企业,我们时时刻刻在与EDID…

HDMI之EDID使用说明

Q1: 为什么要写这篇文章? A1:在最近的工作中遇到了不少问题,其中很多都是和EDID相关的。可以说,作为一家以“显示”为生的企业,我们时时刻刻在与EDID打交道。EDID这东西很简单,但是如果不了解其基本原理和…

EDID基础

EDID EDID:Extended Display Identification Data (拓展显示标识数据)EDID是由VESA创造出来的,用于使显示器支持即插即用。 一般EDID存在于显示器的PROM或EEPROM内,一般如要读取EDID都是通过DDC EDID的作用主要是为了能让PC或其他的图像输…

EDID 解读

现在的显示设备比如显示器,电视等都HDMI接口,那通常每个HDMI接口都保留有一份EDID数据,这个数据可以存在程序里面由系统启动过程中来初始化,更常见的做法是每个HDMI口会有一个EEPROM来保存这份数据,这个EEPROM也只是有…

HDMI设计2----EDID and E-EDID

1,EDID是什么?有什么用? 图1 应用场景 如图1所示的应用场景,PC将视频信号发送 到我们的设备上,经过一系列的传输和切换,设备将视频信号发送到显示器或者投影机上,也就是说,我们的设备位于PC和显…

EDID 解析

1、显示器的第24个字节是设置显示器的电源管理标准的。 各个位的作用如下,注意到标号为1的位是关于主画面。 3、Gamma源于CRT的响应曲线,即反映显像管的图像亮度与输入电子枪的信号电压的非线性关系的一个参数。对于CRT显示器而言,显像管电子…

EDID标准简介

小伙伴们在设计显示接口的时候,常常会遇到显示器支持格式的问题,这里呢就简要的介绍下格式握手的重要协议EDID。 EDID(ExtendedDisplay Indentification Data Standard)就是显示器通过DDC(Display DataChannel&#xf…

HDMI协议介绍(六)--EDID

目录 什么是EDID EDID结构 1)Header Information 头信息(厂商信息、EDID 版本等) (2)Basic Display Parameters and Features 基本显示参数(数字/模拟接口、屏幕尺寸、格式支持等) (3)色度信息 (4)Established Timings(VESA 定义的电脑使用 Timings) (5)Standard Timing…

EDID编辑器介绍

目录 1 EDID介绍2 DDC通道3 EDID编辑工具3.1 Phoenix EDID Designer3.2 Deltacast E-EDID Editor 4 EDID烧录工具 1 EDID介绍 EDID, Extended display identification data,中文名称扩展显示器识别数据,是VESA在制定DDC(Display Data Channel)显示器数据…

什么是EDID,EDID能做什么,EDID基本介绍

Q1: 为什么要写这篇文章? A1:在最近的工作中遇到了不少问题,其中很多都是和EDID相关的。可以说,作为一家以“显示”为生的企业,我们时时刻刻在与EDID打交道。EDID这东西很简单,但是如果不了解其基本原理和概…

EDID使用说明

来源:http://wenku.baidu.com/view/8f82728471fe910ef12df8f4.html Q1: 为什么要写这篇文章? A1:在最近的工作中遇到了不少问题,其中很多都是和EDID相关的。可以说,作为一家以“显示”为生的企业,我们时时刻刻在与EDID…

EDID解析

1 Instruction EDID: Extended Display Identification Data(扩展显示标识数据)是一种VESA (Video Electronics Standards Association)标准数据格式,其中包含有关显示器及其性能的参数,包括供应商信息、最…

EDID 详解

1 Instruction EDID: Extended Display Identification Data(扩展显示标识数据)是一种VESA (Video Electronics Standards Association)标准数据格式,其中包含有关显示器及其性能的参数,包括供应商信息、最…