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

运行,成功!

时间: 2024-10-20 06:20:58

C语言 之建立静态链接库的相关文章

浅谈Windows平台下C++调用静态链接库的方式

浅谈Windows平台下C++调用静态链接库的方式 1. 什么是静态链接库?为什么要用静态链接库? 维基百科上关于静态库的解释是这样的:在计算机科学里,静态库(英语:Static library, Statically-linked library),或称静态库,是一个外部函数与变量的集合体.静态库的文件内容,通常包含一堆程序员自定的变量与函数,其内容不像动态链接库那么复杂,在编译期间由编译器与连接器将它集成至应用程序内,并制作成目标文件以及可以独立运作的可执行文件. 由上面的解释可以很清楚的看

Dev-C++中使用静态链接库

在Dev-C++中,静态链接库的后缀是.a,这点和VS的lib不一样. 一.首先,我们建立静态链接库项目,新建一个CPP文件square.cpp code: class Square{public:float Area(float width,float height);}; float Square::Area(float width,float height){return width * height;} 这个类定义了计算长方形面积的方法.编译无误即生成了和项目名相同的SquArea.a库

C语言编写静态链接库及其使用

本篇讲述使用C语言编写静态链接库,而且使用C和C++的方式来调用等. 一.静态库程序:执行时不独立存在,链接到可执行文件或者动态库中,目标程序的归档. 1.用C编写静态库步骤 a.建立项目(Win32 Static Library) b.加入库程序,源文件使用C文件 (Win32 Static Library) clib.c库源文件 <pre name="code" class="cpp">int CLib_add(int add1,int add2)

介绍静态链接库和动态链接库的区别,及在VC++6.0中的建立和使用

首先介绍一下链接库:链接库分为动态链接库和静态链接库两种 LIB是静态链接库,在程序编译连接的时候是静态链接,其对应的文件格式是.lib.即当程序采用静态链接库的时候,.lib文件中的函数被链接到最终的可执行文件中,因为应用程序所需的全部内容都是从库中复制了出来,所以静态库本身并不需要与可执行文件一起发行. DLL是动态链接库,在程序运行的时候被调用,其对应的文件的格式是.dll.即当程序采用动态链接的时候,.dll文件中的函数并没有被链接到可执行文件中,可执行文件只是保存了函数的地址信息.但是

C语言之静态链接库和动态链接库

1:静态链接库 比较早出现的是静态链接库.静态库其实就是商业公司将自己的函数库源代码经过只编译不连接形成.o的目标文件,然后用ar工具将.o文件归档成.a的归档文件(.a的归档文件又叫静态链接库文件).商业公司通过发布.a库文件和.h头文件来提供静态库给客户使用:客户拿到.a和.h文件后,通过.h头文件得知库中的库函数的原型,然后在自己的.c文件中直接调用这些库文件,在连接的时候链接器会去.a文件中拿出被调用的那个函数的编译后的.o二进制代码段链接进去形成最终的可执行程序. 2:动态链接库 动态

静态链接库与动态链接库详解

转载: 关于静态链接库(Lib,.A)与动态链接库(DLL,.SO) (2011-10-10 21:04:26) 转载▼   分类: c.vc.cpp 在windows下一般可以看到后缀为dll和后缀为lib的文件,但这两种文件可以分为三种库,分别是动态链接库(Dynamic-Link Libraries),目标库(Object Libraries)和导入库(Import Libraries),下面一一解释这三种库. 目标库(Object Libraries) 目标库又叫静态链接库,是扩展名为.

C++ 动态链接库和静态链接库

概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量.函数或类.在仓库的发展史上经历了"无库-静态链接库-动态链接库"的时代. 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了.但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以"动态"地引用和卸载这个与EXE

App开发流程之数据持久化和编译静态链接库

先记录数据持久化. iOS客户端提供的常用数据持久化方案:NSUserDefaults代表的用户设置,NSKeydArchiver代表的归档,plist文件存储,SQLite数据库(包括上层使用的Core Data,FMDB). 每种方案都有各自的应用场景和范围,不能一概而论.不过可以大致以数据储存量和复杂度来区别. 除了以上提到的方案,再记录一种方案:LevelDB代表的键值对数据库. NSUserDefaults常用方法: 1.可以使用标准用户设置[NSUserDefaults standa

动态链接库dll,导入库lib,静态链接库lib

目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”).  静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起.比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静态lib只是壳子.  动态库一般会有对应的导入库,方便程序静态载入动态链接库,否则你可能就需要自己Load