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

news2024/9/23 19:29:09

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.coloradmin.cn/o/510618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络编程六--UDP服务器客户端

写在前面 UDP(User Datagram Protocol)称为用户数据报协议,是一种无连接的传输协议。 UDP的主要应用在即使丢失部分数据,也不影响整体效果的场景。例实时传输视频或音频时,即使丢失部分数据,也不会影响整…

C++11大杂烩

C11大杂烩 文章目录 C11大杂烩介绍语法统一的列表初始化:{}初始化initializer_list简化声明的方式autotypeid().name():获取类型名decltype nullptr范围for循环stl库中的一些变化arrayforward_list final和override右值引用和移动语义左值引用和右值引用 移动构造和…

有没有好用的UI在线设计工具?这5个设计师必备!

这篇文章介绍了 5 款在线UI设计工具,分别是即时设计、InVision Studio、Axure、Framer 和 Principle。其中,即时设计是一款次世代的在线协作UI设计工具,支持多人协同在线设计一键交付、插入交互式动画等功能,最近还更新了全球首款…

网络基础知识1—网络

文章目录 1.网络划分1.1局域网(内网)1.2广域网(公网) 2.网络的作用3.端口号3.1作用3.2两台主机中的进程传输数据3.3格式3.4注意 4.协议4.1概念4.2三要素4.3最终体现4.4作用 5.五元组5.1源IP5.2源端口5.3目的IP5.4目的端口5.5协议 …

MySQL中这14个神仙功能

1.group_concat 在我们平常的工作中,使用group by进行分组的场景,是非常多的。 比如想统计出用户表中,名称不同的用户的具体名称有哪些? 具体sql如下: select name from user group by name;但如果想把name相同的c…

IO 流学习总结

一:IO 流的概述 1. 什么是 IO 流? 存储和读取数据的解决方法 I:input O:output 流:像水流一样传输数据 2. IO 流的作用? 用于读写数据(本地文件,网络) 3. IO 流按…

三年亏百亿仍要造“跑车”,哪吒还有几次试错?

文丨智能相对论 作者丨leo陈 燃油车时代,国产品牌没有一款真正意义上成功的“低价跑车”,那在新能源时代,“电”是否可以创造这种可能? 第一个交出答卷的是哪吒汽车。不久前,哪吒发布首款纯电跑车“哪吒GT”&#x…

3个方法提高电脑运行速度,亲测有效!

案例:怎样提高电脑运行的速度? 【随着使用时间的增长,我的电脑运行速度越来越慢,这样我感到十分不方便和烦恼。有什么办法可以提高电脑的运行速度吗?】 在日常使用电脑过程中,我们难免会遇到电脑运行缓慢…

【C++】第13章: 类继承

文章目录 第十三章 类继承13.1 一个简单的基类13.1.1 派生一个类13.1.2 构造函数:访问权限的考虑13.1.3 使用派生类13.1.4 派生类和基类之间的特殊关系 13.2 继承:is-a关系13.3 多态公有继承13.4 静态联编与动态联编13.4.1 指针和引用类型的兼容性13.4.2…

Doris简介、部署、功能介绍以及架构设计

Doris简介、部署、功能介绍以及架构设计 1. Doris简介 Doris 中文官方文档:https://doris.apache.org/zh-CN/docs/dev/summary/basic-summary 1.1 Doris概述 ​ Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人…

5.10晚间黄金CPI精准分析及多空交易策略

近期有哪些消息面影响黄金走势?本周黄金多空该如何研判? ​黄金消息面解析:周三(5月10日)亚欧盘中,现货黄金震荡下跌,现报2030美元/盎司,稍早一度触及2038美元/盎司高点。美联储理事…

day30_jdbc

今日内容 零、 复习昨日 一、作业 二、SQL注入 三、PreparedStatement 四、事务 五、DBUtil 零、 复习昨日 见晨考 一、作业 package com.qf.homework;import com.qf.entity.User;import java.sql.*; import java.text.SimpleDateFormat; import java.util.ArrayList; import …

Selenium技术在CentOS6.8系统的腾讯云服务器上的相关使用(Linux环境下)

目录 一、解释说明二、操作过程中Linux相关命令1、下载谷歌浏览器2、查看谷歌浏览器的版本3、下载对应版本的谷歌驱动(或者本地上传)4、解压下载的文件5、移动下载文件6、给予文件执行权限7、更新pip3到最高版本8、下载Selenium第三方库9、正式测试10、最…

Rust 快速入门60分① 看完这篇就能写代码了

Rust 一门赋予每个人构建可靠且高效软件能力的语言https://hannyang.blog.csdn.net/article/details/130467813?spm1001.2014.3001.5502关于Rust安装等内容请参考上文链接,写完上文就在考虑写点关于Rust的入门文章,本专辑将直接从Rust基础入门内容开始讲…

如何预测药品市场规模

药品市场规模预测是一个非常关键的步骤,可以帮助判断该项目是否值得投资或开发。以下是一些常见的方法: 药品市场规模可以细分为治疗领域市场规模、药品种类市场规模、区域市场规模、渠道市场规模、品牌市场规模、性质市场规模等。这些规模的了解是一个非…

【Hello Algorithm】异或法

作者:小萌新 专栏:算法 作者简介:大二学生 希望能和大家一起进步 本篇博客简介:介绍算法中的异或法 异或法 异或的概念异或的两个性质题目一 不使用额外变量交换两个数字题目二 出现奇数次的数字题目三 如何从一个整型数字中提取出…

石油化工行业室内外高精度人员定位系统解决方案

石油化工行业是高危行业,很容易发生安全事故,对于石化企业来说,加强人员的安全管控非常有必要。我们可以通过人员定位技术,提升石化企业安全管理水平。下面给大家分享石油化工行业室内外高精度人员定位系统解决方案。 方案概述 石…

BERT原理Fine TuningBert变种

文章目录 BERT原理训练时的任务任务一任务二任务二的改进 模型的输入 BERT - Fine Tuning单个句子的预测类序列标注类Q&A类seq2seq? BERT 变种Transformer-XLXLNetAutoregressive Language ModelDenoising Auto-Encoder乱序Two-Stream Attention与Transformer-X…

RocketMQ双主双从环境搭建

环境要求 64位操作系统,推荐 Linux/Unix/macOS 64位 JDK 1.8 服务器准备 准备4台服务器两台master两台slave,如果服务器紧凑,则至少需要两台服务器相互master-slave IP HOSTS 172.*******.120 rocketmq-nameserver1 rocketmq-master1 …

ElasticSearch小计

1、ElasticSearch简介 1.1、ElasticSearch(简称ES) Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。能够达到近实时搜索,稳定,可靠,快速,安装使用方便。客户端支持Java、.NET&#x…