静态库和动态库的制作与使用

news/2024/5/19 22:54:36/文章来源:https://blog.csdn.net/y_bra_ke/article/details/130351443

1.静态库的制作与使用

小知识:删除命令行,或者是配置好的路径之类的:退出编辑模式后:dd
保存并退出:退出编辑模式后,:wq

(1)静态库的制作

1.首先生成你需要加入的文件的.O文件。使用如下代码

gcc -c add.c div.c mult.c sub.c

生成后是这个样子的:
在这里插入图片描述
然后将这些文件装到库中(lib为静态库的前缀,中间的calc为动态库的名字,动态库的后缀为.a)
使用如下代码:

ar rcs libcalc.a add.o sub.o mult.o div.o 

生成libcalc.a文件,及静态库
在这里插入图片描述

(2)静态库的使用(既生成app)

在这里插入图片描述
既运行这里边的main.c文件
1.之前就是这样生成app文件的,但是head.h和add.c等文件不在一个目录下

gcc main.c -o app

2.找head.h文件

gcc main.c -o app -I ./include/

3.找add.c文件

gcc main.c -o app -I ./include/ -l calc -L ./lib

这样就生成了app文件
在这里插入图片描述
直接运行这里的app文件就可以了

2.动态库的制作与使用

(1)动态库的制作

1.和静态库一样,首先将你要打包的程序生成.O文件,就是将.C文件生成.O文件,-fpic :生成与位置无关的代码

gcc -c -fpic add.c div.c mult.c sub.c

在这里插入图片描述
2.然后将生成的.O文件称作成动态库,要用到以下代码(*.o表示文件夹中所有的.o文件,lib为动态库的前缀,中间的calc为动态库的名字,动态库的后缀为.so)

gcc -shared *.o -o libcalc.so

在这里插入图片描述

(2)动态库的使用

在这里插入图片描述
生成main文件(后面的一串和静态库一样)

gcc main.c -o main -I include -L lib -l calc

在这里插入图片描述
这里直接运行main会出现错误。动态库的代码不会被打包到可执行的程序中。要给这个动态库配置路径

1.临时的(关闭之后会失效):

直接在动态库文件夹下输入这些就行

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/glamour/Linux/lesson06/library/lib

在这里插入图片描述

2.用户级别:

(1)返回到HOME目录下,可以看到这里边有个.bashrc。
在这里插入图片描述
输入vim .bashrc,打开这个文件,然后编辑
在这里插入图片描述
(2)进入之后按shift+G到末尾,然后按O开始编辑,输入以下进行环境配置

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/glamour/Linux/lesson06/library/lib

在这里插入图片描述
配置好后回车,再输入:wq,意思是保存并退出
(3)退出之后想要配置的环境生效,要运行. .bashrc,这样就配置好了
(4)最后到文件中看这动态库的路径是否配置好:
在这里插入图片描述
这样就好了,可以运行这个动态库了。

3.系统级别

(1)首先进入profile文件夹里,输入sudo vim /etc/profile
在这里插入图片描述
(2)像上面一样配置

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/glamour/Linux/lesson06/library/lib

(3)保存退出之后,就可以了
在这里插入图片描述

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

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

相关文章

(浙大陈越版)数据结构 第二章 线性结构 2.4 多项式的加法和乘法运算实现

目录 2.4.1多项式的加法运算实现 如何设计一个函数分别求两个一元多项式的和? 算法思路:两个指针p1,p2分别指向两个多项式的第一个结点(最高项)并循环 循环: 2.4.2 多项式的乘积 1.多项式的表示 2.程…

前端本地存储方案-localForage

1 前言 前端有多种本地存储方案可供选择,以下是其中一些常见的方案: Cookie:Cookie是一种小型的文本文件,可以在浏览器中存储少量数据。Cookie通常用于存储会话信息或用户偏好设置等数据(只能存储少量数据&#xff0…

c语言实现三子棋(思路+项目展示+源代码)

📕博主介绍:目前大一正在学习c语言,数据结构,计算机网络。 c语言学习,是为了更好的学习其他的编程语言,C语言是母体语言,是人机交互接近底层的桥梁。 本章来写一个三子棋小游戏吧。 让我们开启c…

eSIM证书要求-证书验证-EID

SM-DP 和 SM-DS 应该验证 EUM 和 eUICC 证书中限制的 IIN 和 EID 的一致性(参见第 4.5.2.1.0.2 和 4.5.2.1.0.3 节),并考虑 SGP.29 [ 89]。 根据 SGP.29 [89] 颁发的 EID 没有 SGP.02 [2] 中定义的 8 位 IIN。 相反,它们具有可变长…

系统移植 5-10

1.进入linux内核源码目录下&#xff0c;打开Makefile文件&#xff0c;搜索vmlinux&#xff0c;找到cmd_link-vmlinux命令&#xff0c; 1179 cmd_link-vmlinux \ 1180 $(CONFIG_SHELL) $< "$(LD)" "…

NOA上车「清一色」自主品牌,哪些供应商正在突围前线

随着入门级L2进入普及周期&#xff0c;以NOA&#xff08;高速、城区&#xff09;为代表的L2/L2赛道&#xff0c;正在成为主机厂、硬件供应商、算法及软件方案商的下一波市场制高点的争夺阵地。 高工智能汽车研究院监测数据显示&#xff0c;2023年1-3月中国市场&#xff08;不含…

Linux shell编程 数组 ^ 数组排序

数组定义 数组内数据类型可以为数值也可以为字符串。 若字符串类型需要使用 " " 包含以免空格扰乱数组。 方法1 空格分隔直接定义数组 arr(10 20 30 40 50) arr1(zhangsan lisi wangwu) 方法2 指定元素下标定义&#xff0c;若跳过元素不设置会显示为空 arr([0]1…

科技云报道:ChatGPT应用爆火,安全的大数据底座何处寻?

科技云报道原创。 毫无疑问&#xff0c;AIGC正在给人类社会带来一场深刻的变革。 而剥开其令人眼花缭乱的华丽外表&#xff0c;运行的核心离不开海量的数据支持。 ChatGPT的“入侵”已经引起了各行各业对内容抄袭的担忧&#xff0c;以及网络数据安全意识的提高。 虽然AI技术…

如何考核产品经理的绩效?

公司里几乎任何一个岗位都会被考核&#xff0c;产品经理也不例外。那么在产品经理实际工作该如何去考核呢&#xff1f;相信即将步入或身在职场的产品经理一定感兴趣&#xff0c;其实产品经理考核主要分为业绩考核和文化考核两大部分&#xff0c;下面将这两部分具体聊聊。 一、…

Xilinx 7系列FPGA内置ADC

Xilinx 7系列FPGA全系内置了一个ADC&#xff0c;称之为XADC。这个XADC&#xff0c;内部是两个1mbps的ADC&#xff0c;可以采集模拟信号转为数字信号送给FPGA内部使用。 XADC内部可以直接获取芯片结温和FPGA的若干供电电压&#xff08;7系列不包括VCCO&#xff09;&#xff0c;用…

翻遍GitHub帮你总结了一份并发图册+高并发笔记,一次性搞懂并发编程

前言 现在的面试&#xff0c;动不动就是“三高”&#xff0c;Java并发编程已然成为名企大厂面试的必考问题&#xff0c;其重要性不⾔⽽喻。 我也问了一些面试官&#xff0c;他们说&#xff1a;很多面试者&#xff0c;最基本的Java内存模型和JVM内存结构都分不清楚&#xff0c…

华硕ROG|玩家国度魔霸新锐2023 Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原

华硕ROG|玩家国度魔霸新锐2023 Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原 文件地址&#xff1a;https://pan.baidu.com/s/1snKOsH3OMl3GZLqeAf-GLA?pwd8888 华硕工厂恢复系统 &#xff0c;安装结束后带隐藏分区以及机器所有驱动软件 需准备一个16G左右…

Unity Audio -- (3)创建3D音效

本节会添加场景中小瀑布的音效。小瀑布的音效会有一个作用范围&#xff0c;也会根据角色所处的位置不同&#xff0c;产生不同的效果。 添加小瀑布的声音 1. 在Hierarchy中&#xff0c;点击右键&#xff0c;选择Audio -> Create Audio Source&#xff0c;将这个新的Audio So…

C/C++每日一练(20230510) 编辑距离、多数元素、数列累和

目录 1. 编辑距离 &#x1f31f;&#x1f31f;&#x1f31f; 2. 多数元素 &#x1f31f; 3. 求分数数列的前N项和 ※ &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 编辑距离 给你…

Baumer工业相机堡盟工业相机如何进行多个工业相机IP地址配置

Baumer工业相机堡盟工业相机如何进行多个工业相机IP地址配置 Baumer工业相机Baumer工业相机进行多相机IP配置的技术背景Baumer工业相机如何进行多相机IP配置1.配置Baumer工业相机连接的PC端IP地址2.配置Baumer工业相机的IP地址 Baumer工业相机 Baumer工业相机堡盟相机是一种高…

pc端项目的h5页面运行在手机浏览器使用vconsole查看页面元素、控制台、请求等信息

文章目录 一、vconsole介绍1. 作用2. 优势 二、使用1、jq项目和js项目2、vue项目 三、使用介绍1. 使用成功&#xff0c;在页面右下角会出现如下图的vConsole2. 常用功能&#xff08;控制台、请求、元素、存储器&#xff09; 一、vconsole介绍 1. 作用 使用vconsole来查看h5页…

车载以太网 - SomeIP - TC8用例常见缩写

对于初接触SomeIP的朋友来说,看测试用例最大的烦恼我想不仅仅是来自纯英文的描述,更多的一定无休止的缩写,那这些缩写到底代表什么意思呢,我也是深受其害的人,因此就把对应的缩写、中文、英文整理出来了,希望能对大家有所帮助。 常见缩写及中英文注释 SomeIP常见缩写英文…

WPF 从0开始写笔记,全属性功能深度剖析 20230510

文章目录 FontFamilyFontWeightResizeModeAllowsTransparencyMarginCornerRadiusBorder.effectBlurRadiusdirectionVerticalAlignmentTargetTypeControlTemplateDataTemplate 和ControlTemplate的区别StrokePath控件Border FontFamily 在WPF中&#xff0c;FontFamily属性用于指…

【数据结构】- 几个步骤教你认识并实现一个链表之带头(哨兵位)双向循环链表(中)

文章目录 前言&#x1f31f;一、带头双向循环链表&#x1f30f;1.1头删&#xff1a;&#x1f4ab;1.1.1代码&#xff1a;&#x1f4ab;1.1.2流程图&#xff1a; &#x1f30f;1.2尾删&#xff1a;&#x1f4ab;1.2.1代码&#xff1a;&#x1f4ab;1.2.2流程图&#xff1a; &…

第6章 静态代理

第6章 静态代理 把所有静态资源的访问改为访问nginx&#xff0c;而不是访问tomcat&#xff0c;这种方式叫静态代理。因为nginx更擅长于静态资源的处理&#xff0c;性能更好&#xff0c;效率更高。 ​ 所以在实际应用中&#xff0c;我们将静态资源比如图片、css、html、js等交…