源文件 jadd.c
//jadd.c
#include "jadd.h"
int jadd(int x,int y)
{
return (x)+(y);
}
头文件 jadd.h
//jadd.h #ifndef __JADD_H__ #define __JADD_H__ #include#include #include int jadd(int x,int y); #endif
test.c
#include "jadd.h"
int main()
{
printf("%dn",jadd(1,2));
return 0;
}
1、编译动态库
gcc jadd.c -fPIC -shared -o jadd.so
在Linux下 用nm jadd.so可以查看动态库函数。
2、编译静态库
gcc jadd.c -c 生成 jadd.o
ar rcs libjadd.a jadd.o
[root@localhost libsoa]# ls jadd.c jadd.h jadd.so test.c [root@localhost libsoa]# gcc jadd.c -c [root@localhost libsoa]# ar rcs libjadd.a jadd.o [root@localhost libsoa]# nm libjadd.a jadd.o: 0000000000000000 T jadd
3、用动态库编译测试程序
4、用静态库编译测试程序
gcc test.c libjadd.a
gcc test.c jadd.so
5、在a静态库上封装生成so动态库
//sjadd.c
#include "jadd.h"
#include "sjadd.h"
int sjadd(int x,int y)
{
printf("jadd(2,2) = %dn",jadd(2,2));
return (x)+(y);
}
//sjadd.h
#ifndef __SJADD_H__
#define __SJADD_H__
#include
#include
#include
int sjadd(int x,int y);
#endif
//test.c
#include "sjadd.h"
int main()
{
printf("%dn",sjadd(1,2));
return 0;
}
gcc -fPIC -shared -o libsjadd.so sjadd.c -I./ -Wl,--whole-archive ./libjadd.a -Wl,--no-whole-archive
gcc test.c libsjadd.so即可运行



