so文件是是ELF格式文件,共享库(动态库),类似于DLL。节约资源,加快速度,代码升级简化。
so动态库文件的生成:
1、gcc -fPIC -g -c s.c -o libs.o //编译:得到输出文件libs.o
2、gcc -g -shared -o libs.so libs.o //链接:得到输出文件libs.so
例子中测试文件的生成:
gcc -g ts.c -o ts -L. –ls //
一下是例子:
先写一个C文件:s.c
1. #include <stdio.h>
2. int count;
3. void out_msg(const char *m)
4. {//2秒钟输出1次信息,并计数
5. for(;;) {printf("%s %d\n", m, ++count); sleep(2);}
6. }
生成.so文件:
1、 gcc -fPIC -g -c s.c -o libs.o //编译:得到输出文件libs.o
2、 gcc -g -shared -o libs.so libs.o //链接:得到输出文件libs.so
测试:
写一个头文件:s.h
1. #ifndef _MY_SO_HEADER_
2. #define _MY_SO_HEADER_
3. void out_msg(const char *m);
4. #endif
测试文件:
1. #include <stdio.h>
2. #include "s.h"
3. int main(int argc, char** argv)
4. {
5. printf("TS Main\n");
6. out_msg("TS ");
7. sleep(5);
8. printf("TS Quit\n");
9. }
gcc -g ts.c -o ts -L. –ls //编译链接测试文件,得到输出文件ts
执行./ts~