在我们编写软件的过程当中,少不了需要使用别人的库函数。因为大家知道,软件是一个协作的工程。作为个人来讲,你不可能一个人完成所有的工作。另外,网络上一些优秀的开源库已经被业内广泛接受,我们也没有必要把时间浪费在这些重复的工作上面。
既然说到了库函数,那么一般来说库函数分为两种方式:静态库和动态库。两者的区别其实很小,静态库是必须要链接到执行文件中去的,而动态库是不需要链接到最后的执行文件中的。怎么理解呢?也就是说,对于最后的执行文件而言,你是否删除静态库无所谓。但是,一旦你删除了动态库,最后的执行文件就玩不转了。
今天我们讨论的问题是静态库。为了显示windows和linux创建静态库之间的差别,我们首先在windows上面利用Visual C++6.0创建一个静态库。源文件的代码很简单,
#include "test.h"
int add(int a, int b)
{
return a + b;
}
头文件代码也不难
#ifndef _TEST_H
#define _TEST_H
int add(int a, int b);
#endif
如果你需要在windows上面创建一个静态库,那么你需要进行下面的操作,
(1)打开visual C++
6.0工具,单击【File】-> 【New】->【Projects】
(2)选择【Win32
Static Library】,同时在【Project Name】写上项目名称,在【Location】选择项目保存地址
(3)单击【Ok】,继续单击【Finish】,再单击【Ok】,这样一个静态库工程就创建好了
(4)重新单击【File】->【New】->【Files】,选择【C++
Source Files】,
(5)选中【Add to
pproject】,将源文件加入到刚才创建的工程中去,在File中输入文件名+.c后缀
(6)重复4、5的操作,加入一个文件名+.h头文件
(7)分别在头文件和源文件中输入上面的代码,单击F7按钮,即可在Debug目录中生成*.lib静态库文件
那么,在linux下面应该怎么运行呢?其实很简单,两条命令解决,
(1)首先生成*.o文件,输入gcc
-c test.c -o test.o
(2)利用ar命令生成静态库,输入ar rc libtest.a
test.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 ./libtest.a
(2)输入./hello,验证生成的执行文件是否正确
(3)朋友们可以删除libtest.a文件,重新输入./hello,验证执行文件是否可以正常运行