首页 > 系统相关 >Linux 静态库的创建和使用

Linux 静态库的创建和使用

时间:2023-07-21 11:24:15浏览次数:36  
标签:文件 gcc 静态 创建 库中 Linux test

参考文章:《【Linux】静态库和动态库的创建与使用--示例讲解》

 

一、库的种类

Linux 下的库有两种:静态库 和 动态库(共享库);

静态库:程序在编译链接的时候把库的代码链接到可执行文件中, .a 为后缀

动态库:程序在运行的时候才去链接动态库(共享库)的代码,可以多个程序共享使用库的代码,通常以.so为后缀;

二、静态库和动态库的优缺点

静态库:把库的代码载入可执行文件中,因此体积较大,当静态库中的内容更新后需要重新编译;由于编译器或链接器知道实际进入程序的代码,可以进行优化,运行速度会快一些;

动态库:只在程序运行时载入内存,因此体积较小,共享库如果发生变化不需要重新编译;运行速度相对慢一些;

三、静态库的创建与使用

1.创建动态库流程:

(1)将代码文件编译成目标文件.o

gcc  test.c -o test.o 

(2)通过ar工具将目标文件打包成.a静态库文件

ar -crv libMytest.a test.o

ar 是一个专门控制静态库的命令

-c:创建静态库,不管库是否存在

-r 把目录文件合并成一个静态库,如果静态库文件已经存在则更新。

-v :使用详细模式

-q 向静态库中添加目录文件

-t 查看静态库中有哪些目标文件

-d 从静态库中删除目标文件-x 把静态库展开为目标文件

 

2.使用静态库

共有两种方法,分别如下:

(1)直接调用

把静态库当作目标文件一样

gcc 1.c libMytest.a -o test

(2)通过gcc -L参数来指定库的路径

gcc 1.c -L./ -lMytest -o test

-L:表示要连接的库所在目录

-l:指定库的名称(不需要前面的lib和扩展名.a只留下中间部分)

标签:文件,gcc,静态,创建,库中,Linux,test
From: https://www.cnblogs.com/FBsharl/p/17570749.html

相关文章

  • linux swap配置
    背景:主要是服务器内存不够时,可以通过交换分区,减轻内存压力。 基础命令:mkdir:用于创建目录。touch:若文件不存在,系统会建立一个新的文件。dd:可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。mkswap:命令用于设置交换区(swaparea)。swap......
  • Linux17--进程管理
    进程管理#1查看系统进程常用ps-aux#中括号是系统进程[系统进程]#2查看系统进程ps-ef#带有UUID#3查看某个进程grep过滤ps-aux|grepid/进程名字#4查看进程实时变化状态top#5关闭进程kill进程号#正常关闭......
  • Linux的USB协议栈详解
    USB协议栈是指在USB通信协议中,将不同层次的协议分开处理,实现模块化封装,从而提高软件开发效率和系统灵活性的技术。USB协议栈中包含了7个不同的层级,如下:应用层:应用程序通过操作系统提供的API与USB设备进行通信;传输层:负责管理传输控制和可靠性;网络层:负责处理逻辑地址、路由和寻址等问......
  • [Linux][报错解决] 使用固定ip导致无法访问网络
    起因之前试了试代码......
  • 静态方法中创建的对象java
    静态方法中创建对象的流程为了在静态方法中创建对象,我们需要按照以下步骤进行操作:步骤操作1.在静态方法中创建一个新的对象2.设置对象的属性3.返回创建的对象现在让我们逐步实现这些步骤。步骤1:在静态方法中创建一个新的对象首先,我们需要在静态方法中创......
  • 【随手记录】docker swarm集群快速创建
    创建集群主节点:dockerswarminit--advertise-addr=192.168.31.184#advertise-addr主节点IP#同时默认会创建一个ignress网络,这个不能删,如果容器端口映射到外面,则容器会默认加入到这个ignress网络里,如果删除了,存在需要对外开放端口的镜像则会报错找不到ignress网络#即时手动do......
  • linux排查命令
    都是高频好用的定位排查命令,冷知识:可以远程debugtomcat1,top2,top-Hp12798查看比较耗资源的线程3,jstack 12798 |grep 12799的16进制 31ff-A10-B10查看堆空间,上下10行4,ssh服务器安装arthas,(Arthas是Alibaba开源的Java诊断工具)执行thread命令。thread-428线程......
  • 鲲鹏920ARM架构的Linux系统运行的docker-compose
    实现鲲鹏920ARM架构的Linux系统运行的docker-compose作为一名经验丰富的开发者,我很乐意指导你如何实现鲲鹏920ARM架构的Linux系统运行的docker-compose。下面是整个过程的步骤:步骤说明步骤一安装Docker步骤二配置鲲鹏920的ARM架构环境步骤三安装docker-compo......
  • Linux常用指令
    一、复制、移动、删除1、复制cp:cp[选项]源文件或目录目标文件或目录复制文件:cptt1复制文件夹:cp-rdirdir1命令格式:cp[-adfilprsu]源文件(source)目标文件(destination)cp[option]source1source2source3...directory参数说明:-a:是指archive的意思,也说是......
  • Android opencv Mat 创建单位矩阵
    AndroidOpenCVMat创建单位矩阵在计算机视觉和图像处理中,矩阵是一个非常重要的概念。矩阵可以表示图像的像素值、进行图像变换、计算特征向量和特征值等。Android平台上,OpenCV是一个强大的图像处理库,提供了许多矩阵操作的函数和工具。本文将介绍如何使用OpenCV在Android上创建单......