当前位置: 首页 > news >正文

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.表示在当前目录下。

运行,成功!

 

相关文章:

  • ARM的PWM定时器1
  • RTC闹钟的中断处理方法以及程序设计
  • altium designer 制作元器件封装库
  • VTK的Mapper
  • VTK交互系统 1 交互模式入门
  • VTK显示像素图
  • VTK交互系统 2 交互器样式
  • VTK交互系统 3 自定义交互器样式
  • VTK交互系统 4 自定义交互器样式2 键盘鼠标交互器设置
  • Qt多线程1
  • Qt多线程2
  • 基于QT的文件管理软件编写 系列 引言
  • 基于QT的文件管理软件编写 系列 1
  • python安装tensorflow
  • 机器学习之 Keras默认数据集/模型存放位置
  • Django 博客开发教程 8 - 博客文章详情页
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JS专题之继承
  • mysql 5.6 原生Online DDL解析
  • use Google search engine
  • 编写符合Python风格的对象
  • 猴子数据域名防封接口降低小说被封的风险
  • 将回调地狱按在地上摩擦的Promise
  • 讲清楚之javascript作用域
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 整理一些计算机基础知识!
  • ​secrets --- 生成管理密码的安全随机数​
  • #git 撤消对文件的更改
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (4)Elastix图像配准:3D图像
  • (bean配置类的注解开发)学习Spring的第十三天
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)c++ std::pair 与 std::make
  • (转载)虚函数剖析
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net MVC中使用angularJs刷新页面数据列表
  • .Net Remoting常用部署结构
  • .net对接阿里云CSB服务
  • .NET中GET与SET的用法
  • [ C++ ] STL---stack与queue
  • [20190416]完善shared latch测试脚本2.txt
  • [git]git命令如何取消先前的配置
  • [go] 迭代器模式
  • [Hadoop in China 2011] 蒋建平:探秘基于Hadoop的华为共有云
  • [IE编程] IE中使网页元素进入编辑模式
  • [java基础揉碎]关系运算符(比较运算符)逻辑运算符赋值运算符三元运算符运算符的优先级