Linux下静态链接库的生成


1、事先写好两个程序,如下:
mylib.c:
#include "mylib.h"
int func(int x)
{
return x*x*x;
}
mylib.h:
#ifndef MY_LIB
#define MY_LIB
#include <stdio.h>
int func(int x);
#endif

2、将各函数代码所在的源文件编译成目录文件。例如,对于mylib.c,可以用如下命令
  将其编译成目标文件:
  gcc -c mylib.c
  当然在有多个源文件时,只需在gcc 命令行中将其分别列上就可以了,如:gcc -c mylib1.c mylib2.c mylib3.c
  经此一步我们将能够得到各源文件的目标文件。对上例,将得到mylib.o

3、将各目标文件收集起来放到一个静态库文件中。这主要借助于ar命令完成,如:
  ar r ./libtest.a mylib.o
到此为止就可以生成静态库libtest.a了,剩下的只是做下一步了

4、将静态库拷到你的系统默认库目录下和mylib.c的头文件拷到相应的C文件目录下即可:
cp libtest.a /usr/lib/
cp mylib.h /MYSRC/
最后在gcc时用 -ltest 参数加上就行啦。
在编译项里面,-L指定库文件路径,-l指定库文件名字,如果库文件名为libxxx.a,就可以用-lxxx。

相关内容