linux库文件编程

参考博文链接:

https://www.cnblogs.com/guochaoxxl/p/7141447.html

https://www.cnblogs.com/tuhooo/p/8757192.html

一:库函数介绍

事先对 这些函数进行编译,然后将他们放置在一些特殊的文件中,这些目标代码文件称为库。库文件中的函数可以通过链接程序与用用程序进行链接,这样就不用每次执行程序是都对这些通用的函数进行编译了。

标准的c库函数名称为libc,包含了内存管理或者输出输入操作的基本函数。

库的两种形式:静态库和共享库。

二:静态库

静态库由称为文本文档。它是多个.o文件的集合。linux中静态库的后缀名为.a

静态库的代码在编译时就已经链接到应用程序中。

使用ar工具维护和管理静态库

建立和使用静态库

1:编写源文件

源码1:

one.c

#include"one.h"

 

void one(int 1,int 2)

{

  a = int1+int2;

  printf("%d",a);

}

one.h

#ifndef one_h

#define one_h

 

#include<stdio.h>

void one(int1,int2);

 

#endif

 

源码2:

main.c

#include"one.h"

int mian(int argc,char **argv)

{

  int a,b;

  scanf("%d%d",&a,&b);

  one(a,b);

  return 0;

}

2:生成.o文件

gcc -c  one.c

3:建立静态库链接ar rcs libmylib.a one.o

这样就在当前目录下建立好了静态库

4:测试静态链接库

gcc -o testc main.c -static -L. -lmylib

-static指定编译器链接静态库,-L.指定静态库的路径为当前路径

小结

使用静态库可以使程序不依赖任何其他库而独立运行,但是会占用很多的内存空间已及磁盘空间,而且如果库文件更新则要重新编译源码,不灵活。

附加Makefile 文件

 OBJ=main.o one.o                            
  2 testc:$(OBJ) main.h
  3     gcc -o testc $(OBJ)
  4 main.o:main.c
  5 one.o:one.c
    
  8 .PHONY:cleanA clean
  9 cleanA:
 10     rm testc $(OBJ)
 11 clean:
 12      rm $(OBJ)
~                         

动态库编译

源码同上

gcc -shared -fPIC -o libcal.so one.o


gcc -o testCal testCal.c -L. -lcal

 

posted @ 2020-03-22 14:00  zou-ting-rong  阅读(267)  评论(0编辑  收藏  举报