Linux笔记(5):库文件

article/2025/8/18 5:38:56

1、库文件

库是一组预先编译好的方法的集合。

Linux系统存储的库的位置一般在/lib和/usr/lib。库的头文件一般被存储在/usr/include下货其子目录下。

库有两种:

(1)静态库,命令规则:libxxx.a

(2)共享库,命令规则:libxxx.so

2、静态库的生成与使用

例:需要生成静态库和共享库的“.c”文件,其中“foo.h”是函数的声明,“add.c”和“max.c”是函数的定义。

add.c:

int add.c(int x, int y)

{

        return x + y;

}

max.c:

int max(int x, int y)

{

        return x > y? x : y ;

}

foo.h:

int add(int x ,int y);

int max(int x, int y);

2.1 步骤:

①:将需要生成的库文件的所有“.c”文件编译成“.o ”文件

gcc -o add.c

gcc -o max.c

②:使用ar命令将第一步编译的所有“.o”文件生成静态库

ar crv libfoo.a add.o max.o 

其中:c 是创建库,r 是将方法添加到库中,v 是显示过程 

2.2 静态库的使用

测试代码“main.c”的内容

#include<stdio.h>

#include<stdlib.h>

#include"foo.h"

int main(){

        int a=3;

        int b=5;

        printf("a+b=%d\n",add(a,b));

        exit(0);

}

使用静态库“libfoo.a”和“main.c”生成可执行程序

gcc -o main main.c -L. -lfoo  

其中,-L指定库的路径(库在标准目录下可以省略该项),-l指定库的名称(不需要加前面的‘lib’和扩展名‘.a’)

3、共享库的生成与使用

3.1 生成 

例子如上生成静态库所需要的“.c”文件

步骤:

①先将需要生成库文件的所有“.c”文件编译成“.o”文件(方法同生成静态库步骤①)

②使用gcc命令将第一步编译的所有“.o”文件生成共享库

gcc -shared -fPIC -o libfoo.so add.o max.o

3.2 使用

(测试代码同静态库的使用)

使用共享库“libfoo.so”和“main.c”生成可执行文件的过程

gcc -o main main.c -L. -lfoo

其中-L指定库的存储路径,-l指定库的名称(不需要加前面的‘lib’和扩展名‘.so’)

如果在库的存储路径有同名的共享库和静态库,gcc 默认使用共享库。 

生成之后,直接执行 main 程序,发现出错,原因是系统加载共享库时,找不到对应的 共享库文件”libfoo.so”, 但是该库确实在当前目录下存在。这是为什么呢?因为系统默认 只会去存储库的标准位置(/lib 或/usr/lib 等)加载,而不会在当前位置寻找。所以将库拷贝(cp libfoo.so /usr/lib)到 /usr/lib 下,再执行程序,就可以成功。 如果库不在标准位置下,也可以通过设置环境变量”LD_LIBRARY_PATH”来指定加 载库的路径。

 通过ldd 命令查看可执行程序使用了那些共享库

4、静态库和共享库的区别:

静态库在链接时将用到的方法包含到最终生成的可执行程序中,而共享库不包含,只做标记,在运行程序时,才动态加载。

 


http://chatgpt.dhexx.cn/article/XB6SDMi0.shtml

相关文章

vs2019添加库文件

vs2019添加库文件 环境&#xff1a;windows10&#xff0c;64位&#xff0c;vs2019 vs安装路径&#xff1a;D:\visual_studio 需要的材料&#xff1a;头文件&#xff0c;编译好的库文件 方法一 以GLFW为例&#xff0c;找到IDE或者编译器的**/lib和/include文件夹&#xff0…

【Linux基础】静态库和共享库(如何自定义库文件?)

文章目录 前言一、库文件的基本知识1.库文件分类2.库文件命名 二、如何自定义静态库?1.静态库简介2.具体流程&#xff08;详细步骤&#xff09;3.静态库缺点 三、如何自定义共享库?1.共享库简介2.具体流程&#xff08;详细步骤&#xff09;3.共享库优点 四、静态库与共享库区…

Linux 系统上的库文件生成与使用

1.库文件 库是一组预先编译好的方法的集合。Linux系统存储的库的位置一般在&#xff1a;/lib 和 /usr/lib。 在 64 位的系统上有些库也可能被存储在/usr/lib64 下。库的头文件一般会被存储在 /usr/include 下或其子目录下。 库有两种&#xff0c;一种是静态库&#xff0c;其…

库文件、静态库(lib)与动态库(dll)的生成与使用

静态库 程序编译一般需经预处理、编译、汇编和链接几个步骤。在应用中&#xff0c;有一些公共代码是需要反复使用&#xff0c;就把这些代码编译为“库”文件&#xff1b;在链接步骤中&#xff0c;连接器将从库文件取得所需的代码&#xff0c;复制到生成的可执行文件中。这种库…

库文件的生成和使用

一、库文件 库是一组预先编译好的函数方法的集合 Linux上库文件的存放位置: /lib和/usr/lib 库分为两种:静态库和共享库 Linux上静态库标识&#xff08;libxxx.a&#xff09;,共享库&#xff08;libxxx.so&#xff09; Windows上静态库标识&#xff08;.lib&#xff09;&a…

3、库文件

1、什么式库文件&#xff1a; 库文件是预先编译好的方法的集合。&#xff08;相当于一大堆的可执行文件&#xff09; 存放头文件的标准目录&#xff1a;/usr/include 存放库文件的标准目录&#xff1a;/usr/lib 比如: printf函数的实现在库文件中 libcs.so 声明在/usr/inc…

库文件:静态库与动态库的生成和使用

0.引言 当进行C语言的编写时&#xff0c;想要查看标准库的某个函数是怎样实现的&#xff0c;比如 stdio.h 里的 printf 函数&#xff0c;跳转后只能看见函数声明&#xff0c;而无法跳转到函数的定义处&#xff0c;为什么无法查看函数的定义&#xff0c;这就涉及到库文件使用。…

【C++】静态库和动态库文件的生成和使用

前言 文章目录 前言库文件静态库的生成hello.hhello.cmain.c 动态库的生成GCC命令相同时&#xff0c;会先执行.a文件&#xff0c;还是会先执行.so文件&#xff1f;静态库与动态库的区别使用静态库的使用动态库的使用 总结 本文主要讲解了静态库和动态库的生成&#xff0c;以及.…

标准库文件

工艺库有db文件和lib文件&#xff0c;db是打不开的&#xff0c;lib是打得开的。 以反向器为例&#xff0c;时序弧上的延迟由两个因素影响&#xff0c;负载越大&#xff0c;延迟越大&#xff1b;输入转换时间越大&#xff0c;延迟越大。 随着工艺更加先进&#xff0c;线性模…

linux的库文件

文章参考链接&#xff1a;https://www.cnblogs.com/tankblog/p/6780146.html 一、什么是库文件&#xff1f; 本质上来说&#xff0c;库文件就是可执行代码的二进制形式&#xff0c;可以被操作系统载入内存中执行 Linux操作系统支持的函数库分为静态库和动态库&#xff0c;动态…

linux库文件

windows静态库文件扩展名.lib 动态库文件扩展名.dll linux 静态库.a 动态库.so 都是将函数封装在一起编译后供自己或他人调用&#xff0c;好处是编译后的库文件看不带源代码&#xff0c;可以保密 linux库文件一般存在 /lib 和/usr/lib 64位下也有可能存在 /usr/lib64 下…

Linux系统上库文件的生成与使用(静态库和动态库)

目录 1、什么是库文件&#xff1f; 2、静态库的生成与使用 2.1、生成 .o 文件 2.2、创建静态库 2.3、使用静态库 3、动态&#xff08;共享&#xff09;库的生成与使用 3.1、生成 .o 文件 3.2、生成动态库文件 3.3、使用动态库 4、静态库与动态库的区别 1、什么是库文…

库文件简述

什么是库文件&#xff1f; 库就是一组预先编译好的方法的集合。在linux系统中&#xff0c;库文件一般被存储在/lib和/usr/lib中&#xff0c;库的头文件一般会被存储在/usr/include下。 库文件可以分为静态库和共享库两种。 静态库的命名规则为libxxx.a&#xff0c;共享库的命名…

六、库文件

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

库文件

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

EDID 修改

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

EDID参数介绍

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

EDID文件格式转换工具介绍

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

EDID含义浅析

SoftMCCSEDID 开头&#xff08;HEADER&#xff09; 开头八个字节为EDID的开始标志&#xff0c;简称头&#xff0c;固定为&#xff1a;制造商和产品ID 这十个字节表示产品&#xff08;MONITOR&#xff09;ID和制造商信息。详细如下&#xff1a;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…