linux下的制作静态库并使用它
静态库所要用的源文件
文件 fred.c
#include <stdio.h>
void fred(int argc)
{
printf("void fred(int argc) | argc is [%d]\n", argc);
}
文件 bill.c
#include <stdio.h>
void bill(char * argv)
{
printf("void bill(char * argv) | argv is [%s]\n", argv);
}
编译库文件所需要的目标文件
gcc -c bill.c -o bill.o
gcc -c fred.c -o fred.o
上述命令中的 -c 只是对源程序进行编译。而不是去进行链接。
将目标文件进行打包
ar cvr libMylib.a bill.o fred.o
编写一个调用库文件的源文件
头文件 myLib.h
void fred(int argc);
void bill(char * argv);
main 函数文件 staticLibTest.c
#include <myLib.h>
#include <stdlib.h>
int main (int argc, char ** argv)
{
fred(argc);
bill(argv[0]);
exit(0);
}
编译 staticLibTest.c,得到目标文件 staticLibTest.o。使用的命令如下:
gcc -c staticLibTest.c
最后一步,将staticLibTest.o 和使用的“第三方”的库文件进行链接,得到可执行程序.
gcc -o staticLibTest staticLibTest.o -L. -lMylib
命令说明:-L. 表示程序使用的第三方库所在的路径。-lMylib表示其使用的第三方库文件的名称。名称的获取方式为去掉文件名的前三个字符lib,去掉后面的.a这样的后缀名。
或者
gcc -o staticLibTest1 staticLibTest.o libMylib.a
程序运行结果
./staticLibTest
void fred(int argc) | argc is [1]
void bill(char * argv) | argv is [./staticLibTest]