linux下创建共享库和静态库

libcconf-开源 libcconf 是一个用于解析、检查和生成配置文件的软件库。 立即下载

学习笔记:

创建共享库
我的当前目录下有 add.c sub.c main.c
//1
gcc -fPIC -c add.o sub.o // -c 只编译不连接 // -fPIC 参数表示,生成的.o文件 内容都是相对地址*
生成libdong.so.1.1 这个库
gcc -shared -Wl,-soname,libdong.so.1 -o libdong.so.1.1 add.o sub.o // libdong.so.1.1 前面1是大版本号,后面1是小版本号
生成可执行文件
gcc main.c libdong.so.1.1 -o main

//2
然后执行 ./main
会报错:./main: error No such file or directory 找不到库

//3
ldd a.out // ldd 查看 a.out 依赖哪些库?
linux-vdso.so.1 => (0x00007ffce05f6000)
libdong.so.1 => not found 找不到库
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5beda4c000)
/lib64/ld-linux-x86-64.so.2 (0x00005636af218000)

//4
加入库的路径
sudo vim /etc/ld.so.conf
sudo ldconfig -v 更新库

//有几个需要注意的地方
1. /etc/ld.so.conf 中有 include /etc/ld.so.conf.d/*.conf 不能在下一行也写 include 错了都不知道咋错的
下一行直接写 路径
2. /mnt/hgfs/ 中是win和linux共享的 有些东西linux无法访问,无法执行。当初看内核代码也有这个原因
把库copy到别的地方去

创建静态库

//1.使.o文件是以相对路径编译的
gcc -c -fPIC add.c sub.c

//2.创建静态库
ar rcs libmy.a add.o sub.o //ar命令可以用来创建、修改库,也可以从库中提出单个模块
//c:创建一个库。不管库是否存在,都将创建。
//s:写入一个目标文件索引到库中,或者更新一个存在的目标文件索引。

nm libmy.a看一下文件的符号

//3.使用库
gcc main.c ./lib/libmy.a -o main
./main

相关推荐

RRAM/ Near Memory Computing (NMC) Survey - Reading Notes 0707

Reading Notes of Resistive Random Access Memory – Day 2 Chapter 3 RRAM Characterization and Modeling Overview of RRAM Physical Mechanism A general picture for the filamentary switching mechanism. Forming: 对本征RRAM样本,加电压VformingV_{forming}Vforming​,中间氧化层的O

Blog of Lucky H6 989

Linux库之静态库及动态库

Linux库之静态库及动态库

qq_53022114的博客 315

统信UOS系统盘扩容保姆级教程:用GParten-分区编辑器5分钟搞定

本文提供统信UOS系统盘扩容的详细图形化教程。针对系统盘空间不足问题,重点介绍如何使用系统自带的GParten-分区编辑器,在5-10分钟内安全、直观地完成扩容操作,无需记忆复杂命令,适合所有用户快速解决存储空间告急的困扰。

e3f4g5的博客 640

Linux_无法运行可执行文件

本周遇到了一个问题:使用Qt编写好的软件,将其运行之后,生成了可执行文件。但是,当此软件程序的.pro中包含了NS3中的一些.so文件时,只能通过Qt来运行他,无法双击其可执行文件运行。 解决方法:运行不了是因为找不到相关的libns3.19-core-debug.so(或libns3.25-core-debug.so)文件,我们知道ns3的.so文件在build文件夹中,因此需要将这个位置告诉l

caoyangxiaoyao的博客 5939

SAP FICO 银企直联实战:从配置到异常处理的全流程解析

本文详细解析了SAP FICO银企直联的实战配置与异常处理全流程,涵盖银行主数据搭建、支付类配置、银行接口适配等关键步骤。通过实际案例分享,帮助用户掌握实时付款、余额监控和自动对账等核心功能,提升企业财务效率与安全性。特别针对常见问题如凭证重复付款、前置机UUID冲突等提供了实用解决方案。

weixin_29215815的博客 663

金蝶云星空核心数据表解析与高效关联查询指南

本文深入解析金蝶云星空核心数据表结构,提供高效关联查询的实战指南。文章详细介绍了基础资料、业务单据和财务模块的关键表及其关联逻辑,重点阐述了如何利用关联表(_LK表)进行跨单据溯源,并分享了编写高性能SQL的实用技巧与避坑建议,帮助开发者、实施顾问和数据分析师快速掌握数据查询方法,提升工作效率。

weixin_29254673的博客 524

UNIX 环境高级编程(二)—— linux共享库,/etc/ld.so.conf 及 ld.so.conf.d/libc.conf

1. Linux 共享库(/etc/ld.so.conf)这个文件记录了编译时使用的动态链接库的路径。默认情况下,编译器只会使用 (1)/lib、 (2)/usr/lib 这两个目录下的库文件。

2600

Cisco Packet Tracer 7.3免登录技巧:3种方法快速跳过注册界面(附详细截图)

本文针对Cisco Packet Tracer 7.3启动时遇到的登录界面问题,提供了三种合法高效的解决方案。详细介绍了如何利用官方访客模式快速启动、注册思科账号实现一劳永逸登录,以及通过调整本地安装配置优化启动流程,帮助网络学习者与备考者绕过繁琐步骤,快速进入实验环境。

weixin_29305337的博客 737

Linux中的静态库与动态库

动态库:这类库的名字一般是libxxx.M.N.so,同样的xxx为库的名字,M是库的主版本号,N是库的副版本号。调用动态库的时候有几个问题会经常碰到,有时,明明已经将库的头文件所在目录 通过 “-I” include进来了,库所在文件通过 “-L”参数引导,并指定了“-l”的库名,但通过ldd命令察看时,就是死活找不到你指定链接的so文件,这时你要作的就是通过修改 LD_LIBRARY_PATH或者/etc/ld.so.conf文件来指定动态库的目录。动态库的后缀为*.so。相当于一个可执行文件。

li_jiejun的专栏 666

SAP 系统升级不再惧怕 SPAU 与 SPDD:把修改调整做成可控的工程

SAP系统升级中的SPAU/SPDD处理要点:首先明确SPDD处理数据字典对象,SPAU处理程序对象,核心是解决标准对象变更与历史修改的继承问题。关键原则是优先回归标准版本,减少后续升级负担。操作时应利用版本管理对比差异,批量处理可回退对象,并通过F9多选提高效率。对于提示"当前版本与建议一致"的对象直接回归标准。注意区分新旧SPAU界面功能差异,将Note下载移至SNOTE处理,并确保在SPDD/SPAU之后处理SPAU_ENH。最后,所有调整需记录日志并纳入传输请求,确保可追溯性。遵

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 390

AI自瞄原理剖析(四)从Yolo推理坐标到屏幕坐标:基于FOV视角与焦距的坐标变换与精准瞄准

从Yolo推理框架得到的坐标到屏幕坐标的转换是一个涉及到FOV视角、焦距以及分辨率的复杂过程。通过数学公式,我们可以将推理框坐标反推为游戏内的实际坐标,并最终映射到屏幕坐标系中。利用这些信息,AI自瞄系统能够精确计算出准星从当前位置移动到敌人位置的距离,实现精准的自动瞄准。通过这种方法,AI自瞄系统能够在不同的游戏环境下灵活应对,提供高度精确的操作体验。在AI自瞄系统中,目标检测仅仅是第一步,获取到预测框的坐标后,我们还需要将这些坐标转换为实际屏幕上的精确位置。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1333

解决Linux环境下生成的动态链接库,ldd显示找不到依赖库文件

生成动态链接库时查找依赖库文件时会默认在/lib路径下找,但如果所依赖的库文件不在/lib路径下,需要将库文件所在目录添加在/etc/ld.so.conf.d路径下的libc.conf文件中,并命令行输入sudo ldconfig。

qq_45880695的博客 1793

YOLOv11改进 | 主干/Backbone篇 | 利用RT-DETR主干网络PPHGNetV2助力yolov11有效涨点(轻量化目标检测网络)

本文给大家带来利用RT-DETR模型主干HGNet去替换YOLOv11的主干,RT-DETR是今年由百度推出的第一款实时的ViT模型,其在实时检测的领域上号称是打败了YOLO系列,其利用两个主干一个是HGNet一个是ResNet,其中HGNet就是我们今天来讲解的网络结构模型,这个网络结构目前还没有推出论文,所以其理论知识在网络上也是非常的少,我也是根据网络结构图进行了分析(精度mAP提高0.05)。YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备​目录一、本文介绍。

Snu77的博客 3719

Linux编程 静态库和共享库的创建和使用

Linux编程 静态库和共享库的创建和使用库库的概念库的知识静态库特点静态库创建链接静态库共享库特点共享库创建如何找到共享库 库 库的概念 库是一个二进制文件,包含的代码可被程序调用 标准C库、数学库、线程库… 库有源码,可下载后编译,也可以直接安装二进制包 /lib /usr/lib 库的知识 库是事先编译好的,可以复用的代码 在OS上运行的程序基本上都要使用库。使用库可以提高开发效率 Windows和Linux库文件的格式不兼容 Linux下包含静态库和共享库 静态库特点 编译(链接)时把静态

qq_45488482的博客 423

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LINUX-静态库和共享库的创建及其使用

库的概念 库是一个二进制文件,包含的代码可被程序调用 库有源码,可下载后编译;也可以直接安装二进制包 eg:标准C库,数学库,线程库,。。。。 Linux存放路径:/lib 或 /usr/lib 库是事先编译好的,可以复用的代码 在OS上运行的程序基本上都要使用库。使用库可以提高开发效率 Windows和Linux下库文件的格式不兼容 Linux下包含静态库和共享库 静态库 编译(链接)时把静态库中相关代码复制到可执行文件中 程序中已包含代码,运行时不再需要静态库 程序运行时无需加载库,运行速度更快

Ray的博客 893

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Linux环境下静态库和动态库(共享库)的创建及使用

Linux环境下静态库和动态库(共享库)的创建及使用 编写程序时,常常将重复代码写进函数,通过多次调用函数来减少工作量,类似的,当一个工作需要多次调用某些函数和变量时,可以将这些函数、变量封装成库,供其他程序调用,提高开发效率。C语言中有两种库类型,分别为静态库和动态库(共享库)。 静态库 静态库是在目标文件链接成可执行文件过程中,直接将代码载入可执行文件,后期程序的运行不再需要静态库。在Linux系统中,静态库的后缀为.a,静态库的生成分为两步,第一步将源文件编译生成目标文件,第二步通过目标文件生成静态库

Goallegoal的博客 1283

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

linux(三):如何在Linux中创建和使用静态库与共享库

本文将详细介绍Linux环境下静态库和共享库的创建与使用方法,并通过实际案例演示两者的差异及应用场景。

weixin_72359141的博客 884

Linux下的静态库,共享库的创建和使用

编译程序一般要经过:预处理,编译,汇编和链接这几个步骤。在我们写程序的时候,会存在一些公共的代码。如果为每个程序都要重写这些代码,那么势必会造成太多的麻烦。我们可以将这么公共代码生成库文件,在编译程序的链接步骤中,可以静态地或者动态地将这些公共代码与我们的程序链接,这样就避免了重写这些代码的麻烦了。库文件可以分为静态库和共享库;其使用方式可以分为静态链接和动态链接两种类别。 静态库: 在Linu

susershine的专栏 1044

linux下的C语言共享库和静态库的创建和使用

Linux函数库分类:    1) 静态库     a) 定义        静态库就是一些.o目标文件的集合,以.a结尾。静态库在程序链接的时候使用, 链接器会将程序中使用到函数的代码从库文件中拷贝到可执行文件中。一旦链接完成,在执行 程序的时候就不需要静态库了。由于每个使用静态库的应用程序都需要拷贝所用函数的代码, 所以生成的可执行文件会比较大。     b) 创建和应用(

shark的专栏 1029

linux静态库和共享库的创建,链接,执行

静态库 库是一个二进制文件,包含的代码可被程序调用 包括标准c库,数学库,线程库。。。 库有源码,可下载后编译,或直接安装二进制包 系统默认库的路径 /lib 和 /usr/lib 特点 编译时把静态库相关的代码复制到可执行文件 优点:程序包含无需静态库,运行速度更快 占用更多磁盘空间,升级之后需要更新静态库 静态库创建 确定库中函数功能、接口 编写源码hello.c gcc -c hello.c -Wall 编译生成二进制的库文件 创建静态库hello ar crs libhello.a hel

Flow_river的博客 1001

linux系统编程-静态库、共享库的创建和链接

静态库实际上就是一个目标文件的集合。 使用 ar命令能够创建静态库: $gcc -g -c mod1.c mod2.c mod3.c //-g使用gdb调试,-c只编译不链接 $ar r libdemo.a mod1.o mod2.o mod3.o //创建静态库 $rm mod1.o mod2.o mod3.o //创建完成后可删除.o目标文件 显示静态库中所包含的目标文件: $ar tv libdemo.a rw-r–r-- 1000/100 1001016 NOV 15 12:26 2009 mod

weixin_40555950的博客 647

Linux下创建和使用静态库、共享库的方法总结

例:有calc.c(数学功能的实现)和show.c(结果显示)、main.c(对前两个函数里功能的调用) 一、静态库 1、静态库的创建     (1)编辑源程序(.h/.c)     (2)编译成目标文件:gcc -c xxx.c     (3)打包成静态库文件:ar -r   libxxx.a   xxx.o 命令行: gcc -c calc.c gcc -c show.c a

学无止境 493

linux中静态库和共享库的创建和使用

静态库: 上图中的ar crs是生成静态库的固定命令,另外,静态库文件对命名是有要求的,必须是libxxx.a,就像图上一样,然后后面跟随一个或者多个.o文件。 上图中,-L后面可以跟随一个静态库的搜索路径的,图上是一个点,代表当前目录。-l用来指定要链接的库的名称,注意是库名,不是库文件名。 静态库的代码在编译后会复制到文件中,只有编译过了一次,哪怕把库文件删除,原来的代码也可...

baidu_39491365的博客 364

Linux下的静态库和共享库的创建和使用

静态库的创建和使用: 共享库的创建及使用: 第一次: 从/usr/lib下可以看出共享库应该是蓝色字体或是绿色字体,而我第一次创建的共享库却是黑色字体,显然不对,我又重新做了一遍 第二次: 这一次虽然创建好了libfoo.so,但是不能使用,找不到共享库?我又做了第三次 第三次: 我先将切换到管理员,然后 mv libfoo.so /usr/lib: 然后又按着第

IT_liyufeng的博客 466

linux静态库、共享库、动态库三种库的创建和使用

参见文章 1.静态库  静态库就是一些目标文件的集合,以.a结尾。静态库在程序链接的时候使用,链接器会将程序中使用 到函数的代码从库文件中拷贝到应用程序中。一旦链接完成,在执行程序的时候就不需要静态库了。 gcc -c libhello -o libhello.o ar rcs libhello.a libhello.o 链接静态库gcc -c test.c -o test.o gcc te

johnnywww的专栏 1290

Linux中创建 静态库和动态库(共享库) 本人亲测可行

在Linux中创建静态库.a和动态库.so 我们通常把一些公用函数制作成函数库,供其它程序使用。 函数库分为静态库和动态库两种。 1. 静态函数库     这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这

alpha_love的博客 366
上一篇: C/C++函数返回值超过8-汇编分析
下一篇: 重装sourceInsight序列号问题
帅东
博客等级 码龄11年 676粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值