linux-静态库制作与使用

news2024/11/29 12:52:09

 创建2个目录进行创建与使用的演示

创建静态库

准备源文件与头文件

查看所有源文件与头文件

 将源文件编译.o文件,然后将.o文件打包为静态库

gcc -c mymath.c -o mymath.o -std=c99
gcc -c myprint.c -o myprint.o -std=c99

ar指令:打包多个.o文件为静态库 

ar -rc libhello.a  mymath.o myprint.o

ar指令打包多个.o文件--->形成以lib开通.a结尾的静态库文件

利用make快速编译并且打包.o文件。

将头文件与静态库打包到一个目录中

使用静态库

让我们将mklib中的hello目录拷贝到uselib中。这其实就是将我们写的库发给别人用,别人只能看见我们的.o文件无法查看我们的原代码。

来到uselib目录中。

编辑一份拥有main()主函数的源文件。

使用库方法一 

将.头文件放到,默认重新寻找头文件路径中路径--->/usr/include/  

将静态库文件放到标准库文件目录下----> /lib64/

 编译main.c源文件,执行-l(小写L)选项指明使用的库文件,头文件会主动再usr/include搜索,但是库文件不会,主要手动指明。

这里指明的时候只需要lib后的名字,并且不要带后缀.a 

 

 但是我们不要将直接将没经大量检验的头文件与库函数直接放到系统目录中,会污染系统头文件与库。毕竟人家的库函数经过数千遍的洗礼,得到的安全稳定的库。

所以我们使用另一个方法。

使用库方法二

刚刚我们再uselib得到目录,而需要的头文件和库都在里面,在编译的时候其实就可以直接使用该库的头文件。

编译main.c源文件的时候添加选项-L ;-I(大写的i) ;-l(小写的L)  

-L:指明库函数路径

-I(大写的i):指明头文件搜索路径 

-l(小写的L):指明库名称不要加lib前缀与.a后缀 

别忘了 先删除系统库目录和头文件我们写的垃圾文件。

还有其他方法但是我们力推第二种方法,不会污染系统库目录与系统头文件目录。

 

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

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

相关文章

Fast-RCNN理论基础

一:总体流程 1、将图像输入网络得到相应的特征图。 2、使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵。 3、将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预…

测试老鸟整理,从手工进阶自动化测试,自动化之路清晰通透...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

主啊,我甚至不知道从何说起...

主啊,我甚至不知道从何说起...欢迎来到费米悖论。 外面有太多令人恐惧的事物。 我不会一一说过。然而,我读到的一件事情让我感到恐惧,我希望它也让你感到恐惧。 那么,就是这样... 这一切与一个问题有关:如果他们确实存在,为什么还没有来访?可怕的就是这些可能性。 根据《弄清外…

PCB布局思路分析 让你的布局从此简单!

分析好整个电路原理以后,就可以开始对整个电路进行布局布线,这一期,给大家介绍一下布局的思路和原则。1、首先,我们会对结构有要求的器件进行摆放,摆放的时候根据导入的结构,连接器得注意1脚的摆放位置。 ​…

财务共享中心搭建以后,如何进行精细化管理?

财务共享中心通过统一的财务流程、系统和人员配置实现了财务业务的标准化和规范化,为企业的财务管理提供了很大的便捷性和效率性,目前许多大型企业已纷纷开始搭建自己的财务共享中心。 但企业在搭建财务共享中心之后,往往会在运行初期遇上业…

Qt 帮助框架使用

前面我们已经简单了解了Qt帮助框架,本节我们将举例说明生成Qt帮助集,并自定义Qt Assistant。 准备工作 因为创建帮助系统建立帮助文件的前提是HTML文档文件已经存在,所以我们来弄一些简单的HTML文档(难的我还不会)。…

使用exe4j和Inno Setup把jar包转成exe

使用exe4j和Inno Setup把jar包转成exe exe4j下载地址:https://www.ej-technologies.com/download/exe4j/version_60 Inno Setup地址: 链接:https://pan.baidu.com/s/1Lh0JUuQgB6bkbACIx6MqdQ 提取码:dfox 一、exe4j将jar装车exe…

【OpenMMLab AI实战营第二期】二十分钟入门OpenMMLab笔记

OpenMMlab 主页:openmmlab.com 开源地址:https://github.com/open-mmlab 学习视频地址:https://www.bilibili.com/video/BV1js4y1i72P/ 概述 开源成为人工智能行业发展引擎 时间轴 theano:2007 Caffe:2013 Ten…

如何学习 WPF 详细教程

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

SPI通信以及与W2Q564(ROM)交换(读写)数据

一.SPI协议简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,允许芯片与外部设备以全双工、同步、串行方式通信。此接口可以被配置成主模式,并为外部从设备提供通信时钟(SCK)。接口还能以多主配…

uniapp(一) 之 小程序与uniapp 基础

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到 i OS 、 Android 、 Web ( 响应式)、 以及各种小程序(微信 / 支付宝 / 百度 / 头条 / 飞书 /QQ/ 快手 / 钉 钉 / 淘宝)、 …

工程测量仪器:工程安全的保障者

工程仪器是现代工程建设中必不可少的工具,它们可以帮助企业对工程进行监控和管理,从而提高工程运行效率和安全性。在当前的工程建设领域,安全运营已成为企业的首要任务,而工程仪器正是实现这个目标的重要保障之一。 渗压计广泛应用…

数据(浮点数)在内存中的存储(2)

目录 浮点数家族 浮点数类型在内存中的存储 一.为什么说整型和浮点数在内存中存储方式不同(证明) 二.浮点数的存储规则 浮点数在计算机内部的表示方法 1.对于M的存储和取出规则 2.对于E的存储和取出时的规则 对前面代码结果进行解释: …

tinkerCAD基础操作

放大尺寸! 让我们通过调整大小来更改基本框形状! 说明 继续执行下一步。 扩展每个块 每个“框”形状的大小都与提示匹配。 说明 通过左键单击形状来选择一个框。 这将启用形状控点。 使用每个形状底部边缘的黑色手柄在单个方向上调整形状的大小。 使…

nginx+keepalive高可用搭建方案

一、什么是nginx有什么作用 nginx是一款使用非常广泛的Web服务器,它可以提供高性能和可扩展性。它是由Google开发的,并且是Apache HTTP Server的替代品。 以下是一些nginx的主要特点: 轻量级:nginx比Apache轻量级,它…

ChatGPT与软件架构(1) - 快速原型

通过ChatGPT生成设计和原型代码,可以帮助团队快速启动项目,验证想法,提高效率。原文: ChatGPT and Software Architecture Surfing Croyde Bay Unsplash OpenAI的ChatGPT现在越来越火,出现了各种有趣用例。 从许多方面来看&#x…

为何溃坝事故频发,大坝安全如何保障?

随着水利水电工程的重要性日益突显,水库大坝安全越来越受到相关部门的重视。因为大坝的安全直接影响水利工程的功能与作用,因此对大坝安全的监测显得十分必要。大坝安全监测的作用是能够及时掌握大坝的运行状态,及时发现大坝的变形、渗漏等异…

DB-GPT数据库GPT,支持本地部署,可以在私有环境中运行!!

DB-GPT 是什么? 随着大模型的发布迭代,大模型变得越来越智能,在使用大模型的过程当中,遇到极大的数据安全与隐私挑战。在利用大模型能力的过程中我们的私密数据跟环境需要掌握自己的手里,完全可控,避免任何…

PCB钥匙串 diy

制作目标:type-c供电的可触摸调光LED钥匙链。 初步设计方案: 芯片采用触摸调光芯片,用于LED灯光亮度调节及开关控制的单通道触摸芯片。使用该芯片可以实现LED灯光的触摸开关控制和亮度调节。具有如下功能特点和优势:灯光亮度可根…

Redis+Caffeine两级缓存

1、前言 在高性能的服务架构设计中,缓存是一个不可或缺的环节。在实际的项目中,我们通常会将一些热点数据存储到Redis或MemCache这类缓存中间件中,只有当缓存的访问没有命中时再查询数据库。在提升访问速度的同时,也能降低数据库的…