Linux应用程序开发:静态库与动态库的制作及使用

news2024/9/22 4:00:57

目录

  • 一、库的简介
  • 二、静态库与动态库的简介
  • 三、静态库制作与调用案例
  • 四、动态库制作与调用案例

一、库的简介

  库是一种可执行的二进制文件,是编译好的代码。使用库可以提高开发效率。而Linux库的种类可分为动态库和静态库。

二、静态库与动态库的简介

  1、静态库:静态库在程序编译的时候会被链接到目标代码里面,所以程序运行就不再需要该静态库了。因此编译出来的程序体积就比较大。静态库以lib开头,以.a结尾。

  2、动态库(又叫共享库):动态库在程序编译的时候不会被链接到目标代码里面,所以程序运行就需要该动态库了。因此编译出来的程序体积就比较小。动态库以lib开头,以.so结尾。

三、静态库制作与调用案例

  ①先将将库文件生成.o文件例:
在这里插入图片描述
在这里插入图片描述
  ②将.o文件生成静态库:
ar是生成静态库的命令,c是创建,r是覆盖。
在这里插入图片描述
  ③编写一个文件链接静态库文件:
在这里插入图片描述
注意:

mylib为库名,而libmylib为库文件名。
-l后面跟库名, -L后面跟库文件所在的路径。

在这里插入图片描述

四、动态库制作与调用案例

  ①将库文件生成一个与位置无关的.o文件:
在这里插入图片描述
-fpic是代表产生位置无关代码。
在这里插入图片描述
  ②将.o文件生成动态库文件:
在这里插入图片描述
  ③编译一个文件链接动态库文件:
在这里插入图片描述
这里要说明一点,在动态库使用时,系统会默认去/lib、/usr/lib目录下查找动态库,如果使用的库不在里面,就会提示错误。如下图直接执行已经链接动态库的执行文件:
在这里插入图片描述
  那么解决这个问题有三种方法:
    第一种:将生成的动态库拷贝到/lib或者/usr/lib里面去,因为系统会默认去这两个路径下寻找动态库。
    第二种:把动态库所在的路径加到环境变量里面去,比如我的动态库的路径为/home/topeet/mytest,因此我们可以这样添加,如下:(这个只能在当前终端用户有效,重新开一个终端就无效了)

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/topeet/mytest

在这里插入图片描述
    第三种:修改配置文件/etc/ld.so.conf,在这个配置文件里面加入动态库的路径即可,然后再使用命令ldconfig更新目录。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

第十七届中国CFO大会圆满举办 用友蝉联中国CFO首选智能财务厂商!

4月21日,由财政部指导、《新理财》杂志社主办、用友等单位协办的「数字财务 智能引领」第十七届中国CFO大会在北京圆满举办!业内专家、权威学者以及众多来自央国企等知名大型企业的财务领路人荟聚一堂,共襄中国CFO领域的顶尖盛会,…

数字化转型中的石头和沙子问题

作者介绍 朱金衡,西门子Mendix 高级技术咨询顾问及架构师,Mendix Certified 中级培训讲师以及TOGAF Certified 企业架构师。作为专家服务架构师提供咨询服务,如方案设计、开发辅导、故障排除、应用程序审查等,同时创造了许多专门…

【算法】从x的n次方看递归时间复杂度计算

从x的n次方看递归时间复杂度计算 1.循环 这个问题&#xff0c;最简单的办法是用循环 int pow1(int x,int n) {int result 1;for(int i0;i<n;i){result*x;}return result; }如上算法的时间复杂度为O(N)&#xff0c;但还是不够理想。这时尝试使用递归算法 2.递归1 int po…

交换机的电口和光口到底是个啥东东,做网络的这个常识得懂!

在计算机网络中&#xff0c;交换机是一个非常重要的设备&#xff0c;它可以将来自不同设备的数据包进行转发和交换。交换机通常具有多个接口&#xff0c;其中包括光口和电口。在本文中&#xff0c;我们将详细讨论交换机的光口和电口的概念以及它们的不同之处。 电口 电口是交换…

应届生的天坑,悔不该进那外包啊.....

关于计算机专业应届生毕业之后会遇到的就业问题&#xff0c;网上已经有许多的套路&#xff0c;实际上许多人在选择专业的时候并没有考虑到之后的就业方向&#xff0c;甚至于自己所学的专业面向的工作岗位都不是特别清楚。计算机专业毕业大概率是要做程序员的&#xff0c;而目前…

RichTextBox控件详解

RichTextBox和TextBox的区别 从外观来看 multiline设置为true or false区别 textbox RichTextBox 先看截图 属性 AcceptsTab AutoWordSelection BulletIndent DetectUrls Dock EnableAutoDragDrop HideSelection Lines ScrollBars WordWrap SelectionIndent and SelectionC…

FE_TA不知道的CSS 换行系列【1】white-space

在W3C官方描述中&#xff0c;white-space主要有以下两个作用&#xff1a; 是否进行空格合并&#xff0c;以及控制空格合并的方式&#xff1b;是否在soft wrap opportunities&#xff08;文本中可进行换行的断点位置&#xff09;处进行文本换行。 从字面意思来看white-space即…

从github下载项目并进行环境配置

文章目录 1 设置虚拟环境2 git clone 链接地址3 环境配置 1 设置虚拟环境 利用pycharm打开项目&#xff1a;File->Open配置对应的虚拟环境&#xff1a;File->Setting->Project->Python解释器&#xff0c;然后选择对应的虚拟环境如果没有提前设置虚拟环境&#xf…

私人工具集6——使用C# 创建一个简单的restful风格的WebAPI

创建一个简单的WebApi 工具&#xff1a;VS2022 创建新项目 打开VS2022,创建新项目&#xff0c;可以搜索API作为关键字。 为项目取个名字 创建的应用程序&#xff0c;选择WebAPI&#xff0c;注意&#xff0c;右侧的信息默认即可&#xff0c;不要随意选择。 点击创建&#xff…

高可用消息服务消息一致、可靠性、链路稳定性核心关注点

面临的问题 初期业务主要的场景是直播间的群聊消息以及一小部分的单聊消息。由于是教育场景&#xff0c;所以业务在划分聊天室的时候是以班级为单位进行划分的&#xff0c;假设每个聊天室的人数为500人。 问题一&#xff1a;用户的维护 直播场景的群聊与微信等常见的群聊在用…

可视化大屏模板|不玩虚的,套用立得报表

写在前面&#xff1a;这是报表&#xff0c;是可视化大屏报表&#xff0c;是可以直接套用来分析我们自己数据源的可视化大屏报表模板。不是单纯的图片&#xff01; 在一些社交平台上经常看到有人误将可视化大屏图片当做报表求分享。可以理解大家都想要将报表做得好看&#xff0…

信息收集(三)端口和目录信息收集

信息收集&#xff08;一&#xff09;域名信息收集 信息收集&#xff08;二&#xff09;IP信息收集 端口是什么 "端口"是英文port的意译&#xff0c;可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口&#xff0c;其中虚拟端口指计算机内部或交换机…

Matlab绘图中的一些技能

目录 1、matlab坐标轴设置多种字体(复合字体) 2、matlab图片中title生成的标题转移至图像下端 3、指定对应格式和期望dpi的图像进行保存、以及不留白保存 4、设置字体字号&#xff08;x、y轴&#xff0c;标题。全局字体等&#xff09; 5、设置刻度值信息&#xff0c;只有左…

ConcurrentHashMap是如何保证线程安全的

ConcurrentHashMap是如何保证线程安全的 定义和问题解决JDK 1.7实现原理JDK 1.8性能优化总结 定义和问题解决 ConcurrentHashMap相当于HashMap的多线程版本。 它的功能本质上和HashMap没有什么区别&#xff0c;因为HashMap在并发操作的时候会出现各种问题&#xff0c;比如&am…

Android混淆和反混淆

本篇来介绍下Android的混淆和反混淆&#xff0c;说起混淆&#xff0c;大家都会很自然地想到ProGuard&#xff0c;此外还有R8。事实上&#xff0c;AGP3.3之后&#xff0c;官方默认使用R8做代码优化、混淆和压缩。ProGuard和R8常常用于混淆最终的Android项目&#xff0c;增加项目…

Vue-router【VUE】

6. vue-router 6.1 相关理解 6.1.1 vue-router 的理解 路由就是一组key-value的对应关系。多个路由&#xff0c;需要经过路由器的管理vue是一个插件库&#xff0c;专门用来实现SPA应用。 6.1.2 对SPA应用的理解 单页 Web 应用&#xff08;single page web application, SP…

C++基础阶段入门 (1)

1.C统一初始化: 初始化列表解决方案&#xff1a; //C语言的初始化方案 int main() {int a 10;int* ip nullptr;int ar[] { 12,23,34,45,56,67 }; } C 初始化&#xff1a;使用{ } int main(){//char ch a;char ch{ a };//int a 10;int a{ 10 };int b int(10);int x{ 10…

企业软文怎么写吸引人?教你几招

企业每年都要投放大量的商业软文到热门的内容平台上&#xff0c;也许现在你阅读的某篇文章&#xff0c;就是一篇企业软文。 真正厉害的软文在于你根本看不出来这是一条广告&#xff0c;从而让你心甘情愿的为某个产品掏腰包。企业软文到底怎么写才吸引人&#xff0c;接下来伯乐…

sfavsrv导致主机负载高

下午接客户电话&#xff0c;监控告警了&#xff0c;主机负载高&#xff0c;登录后top查看&#xff0c;确实比较的高 再次查看负载高的cpu发现是sfavsrv 吓了一跳&#xff0c;还以为中毒了&#xff0c;发给客户检查是否自行部署了第3方软件&#xff0c;确实第3方的&#xff0c;关…

如何将pdf图片文字转换成word 文字word图片怎么转换pdf

如今大家在工作中常常会运用到电脑来办公&#xff0c;电脑的运用大大提高了我们的工作效率&#xff0c;在带来机会的同时同样也带来了新挑战。 pdf图片怎么转换成word文档&#xff1f;PDF格式是一种常用的文档格式&#xff0c;它可以保持文档内容和格式的完整性&#xff0c;但是…