C语言 之建立静态链接库
下面说一下建立静态链接库的方法
各个C语言编程软件都有它的方法,比如建立一个工程来共享文件,这就比较容易和简单了,现在我们选择使用难一点的linux系统,探究在linux系统下的建立静态链接库的方法。
首先,在linux系统我们在一个文件夹目录里面来建立一个 .h 头文件和一个 .c 文件,(比如我建立tiaoshen.c 和 mmc.h)然后打开它们。
在 .c 头文件里面我们写上自己创作的函数,比如下面我的例子:
int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
int mut(int a,int b)
{
return a*b;
}
int div(int a,int b)
{
return a/b;
}
之后我们在头文件中声明这些函数
int add(int a,int b);
int sub(int a,int b);
int mut(int a,int b);
int div(int a,int b);
然后我们开始编译,为了方便,建立一个makefile管理文档,在里面写入:
all:
gcc tiaoshen.c -o tiaoshen.o -c
ar -rc libtiaoshen.a tiaoshen.o
(注意makefile使用的基本规则和使用方法,这里不赘述)
解释一下这两句话: -o后面表示生成的文件的名字, -c表示只编译,不链接,这样你的主函数写完引用它的时候才把它链接到你的程序中。
ar是打包工具,一个程序。 -rc libtiaoshen.a tiaoshen.o表示用tiaoshen.o创建libtiaoshen.a这个打包文件。
然后开始正式使用。
在某处创建一个.c文件,比如 xu.c 然后打开,写入程序,引用你编写的函数,比如:
#include<stdio.h>
int main(void)
{
int a ,b ;
a=4;
b=7;
printf("4 * 7 = %d\n",mut(a,b));
}
然后保存,编译。
你可以先在存链接库文件的目录下使用 nm libtiaoshen.a 来查看里面的函数。
编译方法:-lxxx -L链接库目录
gcc xu.c -o shen -ltiaoshen -L.
-ltiaoshen表示引用了tiaoshen库,最后面的-L.表示在当前目录下。
运行,成功!
转载于:https://blog.51cto.com/11962449/1839311
C语言 之建立静态链接库相关推荐
- C语言编译构建系统,C语言 之建立静态链接库
下面说一下建立静态链接库的方法 各个C语言编程软件都有它的方法,比如建立一个工程来共享文件,这就比较容易和简单了,现在我们选择使用难一点的linux系统,探究在linux系统下的建立静态链接库的方法. ...
- c语言之动静态链接库
静态链接库.a 出于版权保护行为,将源文件编译但不链接生成.o文件,再用ar工具将多个.o文件归档成.a文件,该.a文件就被称为静态链接库.再发布.a和.h文件,h文件显示有.o中函数声明.用户即可知 ...
- C语言函数库:动态链接库与静态链接库
首先,函数库就是一些事先写好的函数的集合,是别人分享的,我们可以拿来使用的.经过一些校准和整理,就形成一份标准化的函数库.例如glibc 函数库有两种提供形式:动态链接库与静态链接库 早起函数库里的函 ...
- lib库反编译C语言,C语言静态链接库(lib)与动态链接库(dll)
今天看到了之前的笔记,看到之前写的笔记,感觉自己都不认得了~~一.静态链接库(lib) 首先创建 "在VC6中创建项目:Win32 Static Library" 在项目中创 ...
- C语言静态链接库的制作和使用
C语言静态链接库的制作和使用 1.编写arithmetic.c和arithmetic.h [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IZUCi3Gh-1661419 ...
- C语言静态链接库和动态链接库讲解及制作使用
C语言静态链接库和动态链接库讲解及制作使用 1. 引言 静态链接库和动态库均为函数库 函数库:不是C语言的一部分,是一些事先写好的函数的集合,给别人复用 就像scanf和printf函数一样,通过#i ...
- Linux环境下c语言静态链接库和动态链接库创建和使用
库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀. 面对比一下两者: 静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功, ...
- c语言库文件是dll还是lib,C语言之静态链接库与动态链接库(2)
我们发现,无论是静态链接库还是动态链接库,最后都有lib文件,那么两者区别是什么呢? 其实,两个是完全不一样的东西.静态库对应的lib文件叫静态库,动态库对应的lib文件叫导入库.实际上静态库本身就包 ...
- cnsl是什么意思_VS2010下创建静态链接库和动态链接库
VS2010下创建静态链接库和动态链接库 类封装成dll如果你的工作长期与某个领域相关,比如说长期做直接体绘制 (DVR)方面的开发,那么你可能经常使用自己的传递函数类,如果每一个工程你都把传递函数类 ...
最新文章
- 2019热门JAVA面试问题
- Spark UDF用户自定义函数
- java多线程之Semaphore信号量详解
- 银辉给园子里的兄弟姐妹们拜年啦
- Day04 dom详解及js事件
- Ubuntu20.04如何解决QQ闪退问题(亲测有效)
- 在windows10上写自己的第一个python代码
- 楚留香ai人脸识别_《楚留香》评测掌中快意恩仇的世界
- 课堂作业之首尾相连子数组值
- 微观经济学读书笔记(一)
- excel 语法大全
- Java-HelloWorld
- anaconda卡在loading application
- 计算机网络应用层和传输层及网络层协议有哪些?
- 手把手教你如何将chatgpt接入微信公众号
- 使用计算机进行工业模型设计属于,【工业设计论文】计算机辅助工业设计教学改革分析(共3797字)...
- 计算机分子模拟聚乙烯,高分子物理实验思考题@中科大.pdf
- 如何使用MScomm控件
- Ps导航栏的简略讲解(一)
- 基于准则匹配的图像对准