Linux中的动态链接库使用记录

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   成功鸟~!

你可能感兴趣的:(linux,gcc,动态链接库,动态链接库运行时路径)