菜鸟潇寒学习库----静态库

来源:互联网 发布:淘宝卖家密码修改 编辑:程序博客网 时间:2024/04/20 20:12
库library
静态库: 在编译连接时把库里的代码提取出来放入到可执行文件中,程序执行的时候不在依赖库。
动态库: 在编译连接时候只记录要用的名字在哪个库文件中,运行的时候才从库文件中找这个名字(函数或者变量)并访问它。

CPATH,C_INCLUDE_PATH 这连个环境变量都可以指定gcc编译的时候收索头文件的目录。类似-I选项。

1)静态库(归档)libxxx.a
 (1)产生库
  写C语言程序(一般不应该有mian函数)
  gcc -c xxx1.c
  gcc -c xxx2.c
  写一个头文件xxx.h,里面放这些函数和全局变量的声明(extern int a)。
  再ar -r libxxx.a xxx1.o xxx2.o
 (2)使用库
  写C语言程序,包含头文件xxx.h,程序中可以调用库中的函数或者访问库中的全局变量。
方式一:gcc -c usexxx.c ;gcc usexxx.o libxxx.a
方式二:gcc -c usexxx.c ;gcc usexxx.o -lxxx -L.其中-lxxx表示要连接
libxxx.a库文件(xxx称为库名),-L表示在当前目录下(.)找库文件libxxx.a。
方式三:先设置环境变量LIBRARY_PATH的值为库文件所在的目录。然后
gcc -c usexxx.c ;gcc usexxx.o -lxxx==>>两句都可以直接等价于gcc usexxx.c

 -lxxx


******具体演示

***产生库

A.编写一个小程序===>>代码1==>>保存为hello1.c

#include<stdio.h>void hello(){printf("hello!\n");}

B.在编写一段代码==>>保存为hello2.c

#include<stdio.h>void nice(){printf("nice to meet you!\n");}


C.再写完之后就分别执行

gcc -c hello1.c;

gcc -c hello2.c

在这之后你会发现你的文件夹中会多出两个文件

分别是:hello1.o    hello2.o

D.在编写头文件 hello.h

#ifndef PWX_HELLO#define PWX_HELLOvoid hello();void nice();  //函数在头文件里面声明#endif

E.在执行语句

ar -r libhello.a hello1.o hello2.0

在这之后会发现你的文件夹又多出一个libhello.a的文件,这样你的静态库文件就产生了。

***使用库

F.(选择方式一进行演示)

写一个C程序包涵自己定义的头文件,保存为usehello.c

#include<stdio.h>#include"hello.h"int main(){hello();nice();}

G.最后执行gcc -c usehello.c ;gcc usehello.o libhello.a

或者直接执行gcc usehello.c libhello.a

这样也可以生成最后的可执行文件 a.out.

****PS:这只是简单的演示其中一种方式,能力有限****




0 0
原创粉丝点击