Linux_动态库链接顺序

ubuntu18.04

  1. 目标:
    探究同名动态库在不同库目录时的链接顺序

  2. 思路:
    创建3个源文件,函数名称相同,函数定义不同;
    分别创建同名动态库,并分别放在/lib,/usr/lib,/usr/local/lib位置下;
    创建demo,调用函数,查看输出,验证链接顺序。

  3. 实施

position_lib.c:
#include <stdio.h>
void test_link_order()
{
printf("I am dll under /lib\n");
}

position_usr_lib.c:
#include <stdio.h>
void test_link_order()
{
printf("I am dll under /usr/lib\n");
}

position_usr_local_lib.c:
#include <stdio.h>
void test_link_order()
{
printf("I am dll under /usr/local/lib\n");
}

`gcc position_lib.c -fPIC -shared -o libtestlinkorder.so`
`sudo mv libtestlinkorder.so /lib`

`gcc position_usr_lib.c -fPIC -shared -o libtestlinkorder.so`
`sudo mv libtestlinkorder.so /usr/lib`

`gcc position_usr_local_lib.c -fPIC -shared -o libtestlinkorder.so`
`sudo mv libtestlinkorder.so /usr/local/lib/`

`#include <stdio.h>
int main()
{
 test_link_order();
 return 0;
}`
  1. 结果

    image
    image
posted @ 2021-06-05 21:41  llovewhat  阅读(375)  评论(0)    收藏  举报