Linux 下静态库与动态库的制作与使用

news2025/1/6 4:49:51

Linux 下静态库与动态库的制作与使用

文章目录

      • Linux 下静态库与动态库的制作与使用
        • 示例代码:
        • 静态库
        • 静态库制作
          • 静态库使用
        • 动态库
          • 动态库制作
          • 动态库使用


示例代码:

  • test.c
    在这里插入图片描述

  • test.h
    在这里插入图片描述

  • main.c
    在这里插入图片描述

静态库

静态库制作

  • 以示例代码为例,先执行下面命令,生成 .o 文件
gcc -o test.o -c test.c
  • 通过ar命令创建静态库
/*静态库必须以 lib 为前缀,文件拓展名为 .a*/
ar -rsv libtest.a test.o
静态库使用
  • 使用静态库时,如示例代码main.c所示,包含头文件,下面以编译时.a文件在当前目录为例
/*
-L 表示添加库的搜索路径,. 代表当前目录
-l 注意是小写的L,代表库的名称
静态库的真正名称 = libhello.a 去掉前缀 lib 和 后缀 .a 
*/
gcc main.c -o main -L. -ltest
  • 最后执行
    在这里插入图片描述

动态库

动态库制作
  • 以示例代码为例,先执行下面命令,生成 .o 文件
/*如果 test.c 用到了其他 .c文件,比如add.c、sub.c,相关文件也需要生成目标文件。*/
gcc -fPIC -o test.o -c test.c

这里新增了 -fPIC 选项,实际上改变的是 hello.o 的符号表,我们可以使用 nm 命令查看hello.o的符号表,多出了一个全局偏移表,没有这个偏移表是无法动态编译的。
在这里插入图片描述

  • 使用下面命令,生成动态库
/*gcc -shared -o libxxx.so xxx.o xxx.o ... */
gcc -shared -o libtest.so test.o
动态库使用
  • 修改环境变量 LD_LIBRARY_PATH,将当前目录增加到环境变量中
export LD_LIBRARY_PATH=./
  • 只是在当前 Shell 环境下有效,如果新开一个终端,相当于创建了一个新的Shell环境,该环境下的环境变量LD_LIBRARY_PATH是空的。
  • 环境变量 LD_LIBRARY_PATH是动态库的搜索路径,一般情况下为空,可执行文件运行时,会去这个环境变量中搜索动态库路径
  • 使用下面命令编译main.c文件
/*与静态库使用时的编译命令一致*/
gcc main.c -o main -L. -ltest

ldd 命令可以查看当前执行文件所链接的动态库
在这里插入图片描述

  • 最后执行
    在这里插入图片描述

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

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

相关文章

FPGA实现“乒乓操作”

一、“乒乓操作”概述 1、结构 “乒乓操作”是一种常用于数据流控制的处理技巧,可以实现无缝高速数据流缓存。首先“乒乓操作”这个名字本身就很吸引人,其结构一般是由数据选择器和数据缓冲器构成的,数据缓冲模块可以为任何存储模块&…

【MySQL数据库原理】MySQL Community 8.0界面工具汉化

尝试以下方法来汉化 MySQL Workbench 8.0 的菜单: 1、使用社区翻译版本:有一些热心的社区成员会将 MySQL Workbench 翻译成不同的语言,包括中文。你可以在一些开源或社区网站上寻找这些翻译版本,并按照他们的说明进行安装。 2、…

抖音外卖平台区域代理怎么拿?送上申请教程!

作为占据庞大流量的短视频平台,它的一举一动都格外引人注意。年初,抖音短视频平台开始大力进军本地生活市场,除了开通团购业务外,还准备做短视频外卖,这一举动,立刻掀起了今年火热的创业浪潮。 要知道&…

sql server服务无法启动怎么办?如何正常启动?

sql server软件是一款关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点。并且有些应用软件使用过程中是需要sql server数据库的后台支持的,我们在数据编程操作时经常会使用这款编程软件,在编程时系统有时会提示sql server服务无…

pandas读取一个 文件夹下所有excel文件

我这边有个需求,是要求汇总一个文件夹所有的excel文件, 其中有.xls和 .xlsx文件,同时还excel文件中的数据可能还不一致,会有表头数据不一样需要一起汇总。 首先先遍历子文件夹并读取Excel文件: 使用os库来遍历包含子文…

在自定义数据集上实现OpenAI CLIP

在2021年1月,OpenAI宣布了两个新模型:DALL-E和CLIP,它们都是以某种方式连接文本和图像的多模态模型。CLIP全称是Contrastive Language–Image Pre-training,一种基于对比文本-图像对的预训练方法。为什么要介绍CLIP呢?因为现在大火…

阅读分享--重读Youtube深度学习推荐系统论文,字字珠玑,惊为神文

重读Youtube深度学习推荐系统论文,字字珠玑,惊为神文 https://zhuanlan.zhihu.com/p/52169807 废话不多说,下面就跟大家分享一下两次拜读这篇论文的不同体验和收获。 第一遍读这篇论文的时候,我想所有人都是冲着算法的架构去的,在深度学习推荐系统已经成为各大公司“基本…

Linux下安装部署Tomcat8_图解_保姆级教程

检查工作 tomcat依赖于JDK ,所以我们要先检查 Linux 下是否安装了JDK并配置了环境变量 java -version // 查看JDK版本号如需安装JDK,请参考: Linux下安装JDK,巨详细 1.将安装包放到自己所建立的文件夹之下 我这里采用的软件是Xftp,创建一个文件夹,将Xftp的路径指向刚刚创…

一站式开源持续测试平台 MerterSphere 之测试跟踪操作详解

一、MeterSphere平台介绍 MeterSphere是一站式的开源持续测试平台,遵循 GPL v3 开源许可协议,涵盖测试跟踪、接口测试、UI 测试和性能测试等功能,全面兼容JMeter、Selenium 等主流开源标准,有效助力开发和测试团队充分利用云弹性…

这一次,大模型颠覆广告行业!

本文源自:量子位 百度用大模型重构一切,包括现金奶牛业务。 就在刚刚,百度营销官宣接入文心一言,推出新一代营销平台轻舸,也是全球首个AI Native的营销平台。 这么说吧,是有点颠覆互联网广告投放模式内味…

网络安全(红客)自学

前言 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多 google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可以先放放,以后再来解决. …

电脑文件一团乱?试试这个高效率的管理软件

如果你经常被电脑文件管理搞得一团乱,不妨试试这款高效率的文件管理软件——固乔文件管家。下面是如何使用这款软件进行文件管理的详细步骤。 首先,打开浏览器并搜索“固乔文件管家”这款软件。搜索到后,点击下载并安装。安装完成后&#xff…

2023-亲测有效-git clone失败怎么办?用代理?加git?

git 克隆不下来,超时 用以下格式: git clone https://ghproxy.com/https://github.com/Tencent/ncnn.git 你的网站前面加上 https://ghproxy.com/ 刷的一下就下完了!!

【股票价格预测】基于改进莱维飞行和混沌映射的粒子群优化BP神经网络预测股票价格研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

面试项目-黑马头条-项目介绍

1 项目介绍 B站视频黑马头条视频学习总结,侵权请联系删除 1.1 项目背景 随着智能手机的普及,人们更加习惯于通过手机来看新闻。由于生活节奏的加快,很多人只能利用碎片时间来获取信息,因此,对于移动资讯客户端的需求也…

薪资17K+需要什么水平?98年测试工程师面试实录…

我的情况 大概介绍一下个人情况,男,本科,三年多测试工作经验,懂python,会写脚本,会selenium,会性能,然而到今天都没有收到一份offer!从年后就开始准备简历,年…

从官方文档看Redis

一.核心能力 Redis 1.In-memory data structures 内存数据结构 Redis以"键值对" 的方式来存储数据, 是一种"非关系型数据库" ps: MySQL以"表"的方式来存储数据, 是一种"关系型数据库" 2.Programmability 可编程性 Redis可以用脚本…

Eclipse 安装串口终端工具

Eclipse已集成串口终端显示,只需要我们自己下载安装即可使用。使用SSH连接也差不多。 查看eclipse版本信息 help->About Eclipse 查看version,我的是4.7.3a,记住代号,我的是“Oxygen”,下面有用。 安装eclipse自带的“Termin…

【HELLO NEW WORLD】一封来自开放自动化时代的邀请函

施耐德电气开放自动化平台,迈向开放、高效与韧性、可持续、以人为本的未来工业。 HELLO WORLD 是人类在信息世界开启的第一行 也是我们走进自动化领域迎来的第一句问候 如今 面临向数字化与自动化加速转型的新变局 工业领域迫切地需要一场变革 走向更加高效、…

一名IT重装操作系统后的安装环境历程

1、安装JDK,配置环境变量(我一般默认安装,避免后期一些不必要的问题)。 下载链接 个人安装包可从下方下载: 链接:https://pan.baidu.com/s/1XIsjCQ2Y-r1m9H8MBlsILQ?pwd6ekm 提取码:6ekm …