在Linux C中生成动态库方法如下:
1,测试程序:
1)生成动态库的源代码文件Test.c:
#include "stdio.h" int get_result(int firstNum,int secondNum) { printf("so file "get_result" called! "); return firstNum+secondNum; }
其接口文件为:
#ifndef _TEST_H_ #define _TEST_H_ int get_result(int firstNum,int secondNum); #endif //test.h
2)动态链接库测试程序main.c:
#include <stdio.h> #include "Test.h" int main() { int rlt; rlt = get_result(23,7); printf("The result is: rlt = %d ",rlt); return 0; }
2,生成动态链接库
gcc Test.c –fPIC –shared –o libtest.so
该命令生成动态库libtest.so,默认以lib开头,以.so为后缀;
-fPIC:编译为位置独立的代码;
-shared:编译为动态库。
3,调用动态库
gcc main.c -L. -ltest -o main
指定动态库路径:
export LD_LIBRARY_PATH=$(pwd)
假设动态链接库libtest.so和可执行文件位于同一目录,如无此命令会显示下述错误:
./main: error while loading shared libraries:libtest.so:cannot open shared object file:No sush file or directory.
4,执行:
./main
5,结果输出为: