下面说一下建立静态链接库的方法

各个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语言 之建立静态链接库相关推荐

  1. C语言编译构建系统,C语言 之建立静态链接库

    下面说一下建立静态链接库的方法 各个C语言编程软件都有它的方法,比如建立一个工程来共享文件,这就比较容易和简单了,现在我们选择使用难一点的linux系统,探究在linux系统下的建立静态链接库的方法. ...

  2. c语言之动静态链接库

    静态链接库.a 出于版权保护行为,将源文件编译但不链接生成.o文件,再用ar工具将多个.o文件归档成.a文件,该.a文件就被称为静态链接库.再发布.a和.h文件,h文件显示有.o中函数声明.用户即可知 ...

  3. C语言函数库:动态链接库与静态链接库

    首先,函数库就是一些事先写好的函数的集合,是别人分享的,我们可以拿来使用的.经过一些校准和整理,就形成一份标准化的函数库.例如glibc 函数库有两种提供形式:动态链接库与静态链接库 早起函数库里的函 ...

  4. lib库反编译C语言,C语言静态链接库(lib)与动态链接库(dll)

    今天看到了之前的笔记,看到之前写的笔记,感觉自己都不认得了~~一.静态链接库(lib) 首先创建    "在VC6中创建项目:Win32 Static Library" 在项目中创 ...

  5. C语言静态链接库的制作和使用

    C语言静态链接库的制作和使用 1.编写arithmetic.c和arithmetic.h [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IZUCi3Gh-1661419 ...

  6. C语言静态链接库和动态链接库讲解及制作使用

    C语言静态链接库和动态链接库讲解及制作使用 1. 引言 静态链接库和动态库均为函数库 函数库:不是C语言的一部分,是一些事先写好的函数的集合,给别人复用 就像scanf和printf函数一样,通过#i ...

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

    库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀. 面对比一下两者: 静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功, ...

  8. c语言库文件是dll还是lib,C语言之静态链接库与动态链接库(2)

    我们发现,无论是静态链接库还是动态链接库,最后都有lib文件,那么两者区别是什么呢? 其实,两个是完全不一样的东西.静态库对应的lib文件叫静态库,动态库对应的lib文件叫导入库.实际上静态库本身就包 ...

  9. cnsl是什么意思_VS2010下创建静态链接库和动态链接库

    VS2010下创建静态链接库和动态链接库 类封装成dll如果你的工作长期与某个领域相关,比如说长期做直接体绘制 (DVR)方面的开发,那么你可能经常使用自己的传递函数类,如果每一个工程你都把传递函数类 ...

最新文章

  1. 2019热门JAVA面试问题
  2. Spark UDF用户自定义函数
  3. java多线程之Semaphore信号量详解
  4. 银辉给园子里的兄弟姐妹们拜年啦
  5. Day04 dom详解及js事件
  6. Ubuntu20.04如何解决QQ闪退问题(亲测有效)
  7. 在windows10上写自己的第一个python代码
  8. 楚留香ai人脸识别_《楚留香》评测掌中快意恩仇的世界
  9. 课堂作业之首尾相连子数组值
  10. 微观经济学读书笔记(一)
  11. excel 语法大全
  12. Java-HelloWorld
  13. anaconda卡在loading application
  14. 计算机网络应用层和传输层及网络层协议有哪些?
  15. 手把手教你如何将chatgpt接入微信公众号
  16. 使用计算机进行工业模型设计属于,【工业设计论文】计算机辅助工业设计教学改革分析(共3797字)...
  17. 计算机分子模拟聚乙烯,高分子物理实验思考题@中科大.pdf
  18. 如何使用MScomm控件
  19. Ps导航栏的简略讲解(一)
  20. 基于准则匹配的图像对准

热门文章

  1. 通过Windbg查看DataTable的值
  2. 旋转矩阵、欧拉角、四元数、轴/角之间的转换
  3. MySQL学习笔记(六)MySQL8.0 配置笔记
  4. Skynet通讯遇到的奇怪问题
  5. 然并卵:BF 科普 BF 解释器的 JS 实现
  6. mysql高可用+keepalived
  7. 通过CSS让html网页中的内容不可选
  8. 局域网常见***与如何防范讲解【14集】
  9. JS一起学03:js组成、下拉+text、字符串拼接、分号问题、数据类型、变量类型、作用域和闭包、命名、运算符、流程判断、调试、iNow、onchang
  10. Firebug入门指南