热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxC未链接到本地动态库

我在项目中需要链接一个动态库

我在项目中需要链接一个动态库



1
 gcc -o test main.c  -lsmbclient -ltalloc -ltevent

提示错误

1
2
/usr/bin/ld: 找不到 -lsmbclient

collect2: error: ld returned 1 exit status

没有找到库的路径,所以使用 -L 添加库的路径



1
gcc -o test main.c -L. -lsmbclient -ltalloc -ltevent

编译成功,但执行的时候出现问题。猜想可能是LD_LIBRARY_PATH变量未设置的问题
根据 https://www.cprogramming.com/...
设置变量,并且能够肯定变量值设置成功,程序正常运行,但结果还是不正确。
执行

1
ldd test | grep smbclient

1
libsmbclient.so.0 => /usr/lib/x86_64-linux-gnu/libsmbclient.so.0 (0x00007fdbb6561000)

程序链接的是系统中的库而不是本地的库,所以执行结果不对。
但我设置了$LD_LIBRARY_PATH的值并没用。
我又测试了使用 rpath 参数设置路径,但ldd的结果还是不对
链接器读取到了-L设置了库的路径,并且找到了库,那为何链接进去的值是系统的?求助!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ pwd

/home/chenzhen/packSource/my_samba



$ ls

get_auth_data_fn.h  libsmbclient.h  libsmbclient.so  libtalloc.so  libtevent.so  main.c  test



$ echo $LD_LIBRARY_PATH

:/home/chenzhen/packSource/my_samba/



$ gcc -L/home/chenzhen/packSource/my_samba -Wl,-rpath=/home/chenzhen/packSource/my_samba -Wall -o test main.c -lsmbclient -ltalloc -ltevent



$ ldd -r test

    libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f1d5ae2c000)

    libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f1d5ac27000)

    libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00007f1d5a9fd000)

    ................中间省略70条左右

    libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00007f1d5a5a6000)

    libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f1d5a2ec000)

    libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f1d5a0b3000)

    libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f1d59eaa000)

undefined symbol: smbc_notifydir    (./test)



$ objdump -tT libsmbclient.so | grep smbc_notify

0000000000048c1e g     F .text    000000000000001e              smbc_notifydir

0000000000048c1e g    DF .text    000000000000001e  Base        smbc_notifydir



系统库是没有这个函数的,我加入的,本地的库可以通过objdump看到



   



推荐阅读
author-avatar
郁雯佩菱2
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有