在我们编写软件的过程当中,少不了需要使用别人的库函数。因为大家知道,软件是一个协作的工程。作为个人来讲,你不可能一个人完成所有的工作。另外,网络上一些优秀的开源库已经被业内广泛接受,我们也没有必要把时间浪费在这些重复的工作上面。
既然说到了库函数,那么一般来说库函数分为两种方式:静态库和动态库。两者的区别其实很小,静态库是必须要链接到执行文件中去的,而动态库是不需要链接到最后的执行文件中的。怎么理解呢?也就是说,对于最后的执行文件而言,你是否删除静态库无所谓。但是,一旦你删除了动态库,最后的执行文件就玩不转了。
今天我们讨论的问题是静态库。为了显示windows和linux创建静态库之间的差别,我们首先在windows上面利用Visual C++6.0创建一个静态库。源文件的代码很简单,
首先是add.c文件:
#include "test.h"
int add(int a, int b)
{
return a + b;
}
头文件test.h
#ifndef _TEST_H
#define _TEST_H
int add(int a, int b);
#endif
那么,在linux下面应该怎么运行呢?其实很简单,两条命令解决,
(1)首先生成*.o文件,输入gcc -c add.c -o add.o
(2)利用ar命令生成静态库,输入ar rc libadd.a add.o
如果此时还有一个hello.c文件使用该静态库,
#include <stdio.h>
#include "test.h"
int main()
{
printf("%d\n", add(2, 3));
return 0;
}
其实也很简单,输入一个简单的命令就可以生成执行文件了,
(1)首先输入gcc hello.c -o hello ./libadd.a
(2)输入./hello,验证生成的执行文件是否正确
(3)朋友们可以删除libadd.a文件,重新输入./hello,验证执行文件是否可以正常运行