静态库和动态库

静态库和动态库基于Windows和VScode 基于Windows和VScode关于C/C++的静态库和动态库创建和使用。 阅读详情

一、编写简单的add/sub/mul/div函数
add函数 :

int add(int a,int b)
{
        return a+b;
}

sub函数:

int sub(int a,int b)
{
        return a-b;
}

mul函数 :

int mul(int a,int b)
{
        return a*b;
}

div函数:

int mul(int a,int b)
{
        return a*b;
}

二、写依赖文件makefile:


.PHONY: clean
main:add.o sub.o mul.o Div.o main.o
        gcc $^ -o $@
%.o : %.c
        gcc -c $< -o $@ -I ../include
clean:
        rm -rf *.o

三、封装成静态库:
静态库:对一系列.o文件进行打包,会将源代码放进来
生成方法:ar -cr lib库名.a 文件
ar -cr libmymath.a(mymath为库名) 文件
使用:
gcc man.c -L. -l库名(-lmymath)
寻找库:
/lib64
/usr/lib/64
-L:库路径
cp libmymath.a /lib.64 //将自己写的库放在系统的库中,一般不要这样做。
具体操作方法如下:

四、生成动态库
动态库(共享库 shared libary):ldd 文件:可以查询这个文件用到的动态库信息
生成动态库

  gcc   -fPIC (位置无关的代码)   -shared libxxx.so(xxx为动态库的库名)  xxx.c
  (gcc -fPIC -shared -o libmymath.so add.c sub.c mul.c)

动态库文件是一个可重新定位的文件,动态库只是放符号,并不把代码放进来。运行阶段才将代码放进来。
链接动态库

            gcc main.c -L. -lmymath

使用动态库(三种方法)

  1、 /lib64/
                /usr/lib64
  2、export LD_LIDRARY_PATH=.
  3、/etc/ld.so.conf.d/xxx.conf   文件中将动态数据库的路径写入
 例如:echo `pwd` >/etc/ld.so.conf.d/my.conf
             ldconfig   //刷新缓存


export LD_LIBRARY_PATH=.(.代表当前目录)
执行结果:

【chips】个人笔记系列-SystemVerilog 个人整理的Systemverilog笔记。 阅读详情

相关推荐

Concentration Inequality(集中不等式)更新版

欢迎来我博客 https://wyue.name/2020/04/17/1/阅读这一篇博文 转载前请联系我,联系方式请见我博客 https://wyue.name/ Concentration inequality 刻画了一组随机变量的和(或者样本平均数)与其期望值的偏离程度,在算法收敛性分析过程中是非常有用的一类不等式。 这次主要总结一下最近一段时间遇到的集中不等式,不仅是不等式形式,...

Yue的博客 4554

Linux环境下c语言静态链接库和动态链接库创建和使用

库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。 面对比一下两者:     静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。 动态库而言:某个程序在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝了。如果有,则让其共享那一个

x1r2p3的专栏 8332

PCIe信号眼图总是不开?手把手教你调CTLE和DFE参数(附实测波形对比)

本文详细解析了PCIe信号眼图调试中CTLE和DFE参数的优化方法,帮助硬件工程师解决眼图无法张开的问题。通过实际案例和步骤指导,介绍了如何调整CTLE直流增益和DFE抽头系数,提升接收端均衡器性能,确保信号完整性。

weixin_26805597的博客 213

Add函数

/Add函数代处理num1+num2。

kileprotues的博客 191

GAMES101作业3-遇到的各种问题及解决方法

记录在做作业3时遇到的一些坑!以及最后的解决办法。

qq_41835314的博客 6815

Homebrew国内镜像自动安装全攻略:从零到精通

本文提供了一份详尽的Homebrew国内镜像自动安装指南,旨在帮助Mac用户,特别是国内开发者,快速、无痛地部署这一强大的包管理器。通过使用优化的国内镜像脚本,实现一键自动安装,有效解决官方源访问缓慢或失败的问题。文章从安装前准备、脚本执行步骤、原理讲解到日常使用命令和常见问题排查,提供了从零到精通的完整路径,让用户在短时间内掌握Homebrew的核心用法,提升开发与工作效率。

a0b1c2d3的专栏 967

简单定义函数加法,三种易懂形式

printf("请输入a:");printf("请输入b:");printf("请输入a:");printf("请输入b:");printf("请输入a:");printf("请输入b:");

y1398707073的博客 5017

15. GD32E230定时器实战:基于TIMER5的1秒LED闪烁中断配置详解

本文详细讲解了如何在GD32E230微控制器上配置TIMER5定时器,实现精准的1秒LED闪烁中断。内容涵盖从时钟开启、参数计算、中断设置到服务函数编写的完整流程,重点解析了预分频值与周期值的配置方法,帮助开发者掌握硬件定时器的核心应用。

weixin_29092787的博客 134

头歌Linux实验——C语言编程

头歌Linux实验——C语言编程

2201_75390271的博客 3419

音乐生成 - 使用LSTM或Transformer模型进行音乐生成,如MIDI音乐生成。

在本篇博客中,我们将介绍如何使用LSTM和Transformer模型生成MIDI音乐。我们将首先概述音乐生成的一般流程,然后深入了解LSTM和Transformer模型的特点和实现。最后,我们将通过Python代码演示如何使用这两种模型生成MIDI音乐。

斌擎科技 1717

Jetson AGX Orin平台Jetpack5升级Jetpack6,自研载板USB不工作问题调试

1. 问题描述将AGX Orin工业的新板放到定制的载板上当在ubuntu 22和Jetpack 6.1上使用SDKManager刷机时,lsusb为空,并且在引导时没有发现/注册xusb设备。USB C端口正常打开并供电,但似乎没有数据传输。在Ubuntu 18 Jetpack 5.1.4 SDKManager上同样刷机之后,usb C集线器在引导时被正确地发现,显示在lsusb中,并识别/挂载外部驱动器。

jzwjzw19900922的博客 1509

指针

1.数组指针 : 能够指向数组的指针 int *p1[10]; 指针数组 int (*p2)[10]; 数组指针 #include <stdio.h> int main() { int arr[10] = { 0 }; printf("arr = %p\n", arr); printf("&arr= %p\n", &arr); printf("a...

xiaoming1999的博客 319

企业AI选型大揭秘:扣子(Coze) Bot与微信对话开放平台深度剖析

本文对比分析了字节跳动的扣子(Coze)Bot和腾讯的微信对话开放平台两款AI聊天机器人解决方案。扣子(Coze)Bot凭借强大的大模型支持、丰富的插件生态、低代码开发及多平台部署能力,在功能丰富度和灵活性方面表现突出,适合技术实力强、业务场景复杂的企业。微信对话开放平台则依托微信生态优势,在客户服务和营销推广场景中更具优势,其零门槛接入方式更适合技术能力较弱的企业。企业在选型时应综合考虑规模、预算、业务场景和技术能力等因素,选择最适合的AI解决方案,以充分发挥AI技术价值,提升企业竞争力。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 433

Linux动态库和静态库

文章目录动静态库的基本原理认识动静态库动静态库各自的特征静态库的打包与使用打包使用动态库的打包与使用打包使用 动静态库的基本原理 动静态库的本质是可执行程序的“半成品”。 我们都知道,一堆源文件和头文件最终变成一个可执行程序需要经历以下四个步骤: 预处理: 完成头文件展开、去注释、宏替换、条件编译等,最终形成xxx.i文件。 编译: 完成词法分析、语法分析、语义分析、符号汇总等,检查无误后将代码翻译成汇编指令,最终形成xxx.s文件。 汇编: 将汇编指令转换成二进制指令,最终形成xxx.o文件。 链接

2021dragon的博客 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

动态库和静态库

介绍动态库和静态库的加载方式

weixin_45372839的博客 1549

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【Linux】静态库和动态库

介绍动静态库、制作动静态库以及使用动静态库,基于地址空间理解动态库加载和程序运行的过程!

YoungMLet的博客 4089

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Linux —— 动态库和静态库

详细演示了动静态的库的制作和使用

M的博客 6002

静态库和动态库的区别

静态库和动态库的区别 1. 什么是库2. 静态库3. Linux下创建与使用静态库4. 动态库5. 总结 1. 什么是库         库是写好的,现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。         本质上来说,库是一种可执行代码的二进制形式,可以被操作系

qq_42688149的博客 6770
上一篇: 进程IO----fopen系列函数和open系列函数,结构体fd和FILE的比较
下一篇: 命名管道和匿名管道
ffsiwei
博客等级 码龄9年 72粉丝 63原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值