1.首先创建了一个文件shareTest.c
#include <stdio.h>
void Say()
{
printf("Say Hello\n");
}
void Look()
{
printf("Look at me\n");
}
void Hear()
{
printf("Hear a song\n");
}
2.编译为so文件gcc -shared -fPIC -o libshareTest.so shareTest.c,fPIC的意思是与地址无关代码
这样就出现了 libshareTest.so
3.编辑一个文件test.c
#include <stdio.h>
int main()
{
int a;
int b = 0;
char c;
char d = 'a';
printf("Hello\n");
Say();
Look();
}
4.编译:gcc test.c -o test -L/home/zxx/experiment/ -lshareTest
5.运行:./test,出错,提示错误为 error while loading shared libraries: libshareTest.so: cannot open shared object file: No such file or directory
6.分析原因,虽然编译的时候指定了动态链接库的路径,但是在运行的时候,系统又去/usr/lib寻找 libshareTest.so,因此我们还要指定运行时动态链接库路径
4.2编译:gcc test.c -o test -L/home/zxx/experiment/ -Wl,-rpath,/home/zxx/experiment/ -lshareTest
5.2运行:./test 成功鸟~!