当前位置: 首页 > web >正文

linux软硬连接

目录

一 .什么是库

二.静态库

2.1静态库的生成:

2.2静态库的编译(一图解决)

2.2.1 假设我们的 头文件 和 libxxx.a(静态库文件)在同一个目录下。

2.2.2 假设我们的 头文件 和 libxxx.a(静态库文件)不在同一个目录下。

三.动态库

3.1动态库的生成:

3.2 动态库的编译

3.2.1 解决方法:


一 .什么是库

库是预先编写好的、用于实现特定功能的一组代码集合。这些库可以被多个程序共享使用,以减少重复代码的编写和提高代码的复用性。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。就是把.o文件编译到一起。库有两种:

静态库. a[Linux]、.lib[windows]
动态库. so[Linux]、.dll[windows]


二.静态库

静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中,程序运行的时候将不再
需要静态库。

我们先写我们的代码例子

#include<stdio.h>
#include"mymath.h"
#include"mystring.h"
int main()
{int a = 10;int b = 20;char* str = "hello linux";int c = add(a,b);int d = subtract(a,b);int sz = mystrlen(str);printf("add:%d,sub:%d,sz:%d\n",c,d,sz);return 0;
}

2.1静态库的生成:

ar -rc  libxxx.a  xxx1.o  xxx2.o

例子:

生成结果:


2.2静态库的编译(一图解决)

gcc -o  main  main.c  -I头文件路径  -L库文件路径  -l xxx

如图所示:

2.2.1 假设我们的 头文件 和 libxxx.a(静态库文件)在同一个目录下。

gcc -o main main.c  -L.  -l myc


2.2.2 假设我们的 头文件 和 libxxx.a(静态库文件)不在同一个目录下。

gcc -o main main.c  -I./lib/myinclude  -L./lib/mylib -l myc


三.动态库

动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。
一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目
标文件的整个机器码。

3.1动态库的生成:

gcc -o libxxx.so xxx.o xxx.o -shared


3.2 动态库的编译(不在系统共享库路径不能运行但能生成

 使用  gcc -o  main  main.c  -I头文件路径  -L库文件路径  -l xxx 可以生成文件但不可以运行。

不可以运行

3.2.1 解决方法:

1. 拷贝.so文件到系统共享库路径下,一般指/usr/lib、/usr/local/lib、/lib64等
2. 向系统共享库路径下建立同名软连接
3. 更改环境变量:LD_LIBRARY_PATH
4. ldconfig方案:配置/etc/ld.so.conf.d/,ldconfig更新

补充:ln生成符号链接文件,指的是通过 ln -s 命令生成软链接文件

http://www.xdnf.cn/news/1445.html

相关文章:

  • 3.1 Agent定义与分类:自主Agent、协作Agent与混合Agent的特点
  • Vue3祖先后代组件数据双向同步实现方法
  • 基于STM32、HAL库的MAX5402EUA数字电位器驱动程序设计
  • Qt creator 16.0.1 语言家失效解决方法
  • 洛谷5318C语言题解
  • AIGC(生成式AI)试用 31 -- AI做软件程序测试 2
  • JEnv-for-Windows​管理JDK版本
  • web刷题笔记
  • 基于deepseek的模型微调
  • HCIA-Access V2.5_18_网络管理基础_3_ 华为接入网络网络管理系统概览
  • 2025年04月23日Github流行趋势
  • Byte-Buddy系列 - 第3讲 byte-buddy与jacoco agent冲突问题
  • Qt Creator中自定义应用程序的可执行文件图标
  • node.js 实战——(path模块 知识点学习)
  • 计算机视觉基础
  • 编程实现ESP8266分别作为服务端 客户端
  • 集结号海螺捕鱼服务器调度与房间分配机制详解:六
  • nginx部署前端项目时,正常访问前端页面成功后,浏览器刷新报404解决访问
  • ​​OSPF核心机制精要:选路、防环与设计原理​
  • 一篇文章学会开发第一个ASP.NET网页
  • 金融租赁质检的三重业务困境 质检LIMS系统的四大价值赋能场景
  • “时间”,在数据处理中的真身——弼马温一般『无所不能』(DeepSeek)
  • MCU开发学习记录11 - ADC学习与实践(HAL库) - 单通道ADC采集、多通道ADC采集、定时器触发连续ADC采集 - STM32CubeMX
  • Python jsonpath库终极指南:json数据挖掘的精准导航仪
  • 消息中间件RabbitMQ02:账号的注册、点对点推送信息
  • MySQL运算符
  • kafka安装、spark安装
  • 5.学习笔记-SpringMVC(P53-P60)
  • Spring Boot 的配置加载顺序
  • Elasticsearch学习