您的位置:首页 > 运维架构 > Linux

linux下的制作静态库并使用它

2016-02-19 16:14 731 查看
静态库所要用的源文件
文件 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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: