1.结论
这里先给出概述结论:
1、编译时-l方式链接时,搜索的是不带版本号的动态库,按文件名称搜索;
2、编译链接时,写入二进制动态段的是依赖动态库的soname,而非文件名称
3、运行时需要依赖库的soname作为文件名的文件,而不管是否是软连接还是实际文件,已经动态库地soname是什么;
下面 表格中包括了编译和运行命令
2.示例代码
2.1.Tool.h
int add(int val1,int val2);
2.2.Tool.c
#include “tool.h”
int add(int val1,int val2)
{
return val1+val2;
}
2.3.Main.c
#include <stdio.h>
#include “tool.h”
int main()
{
int a = 1;
int b = 2;
printf("%d add %d = %d\n",a,b,add(a,b));
return 0;
}
3. 运行示图
3.1.运行效果
$ ./main
1 add 2 = 3