我在项目中需要链接一个动态库
gcc -o test main.c -lsmbclient -ltalloc -ltevent
提示错误
/usr/bin/ld: 找不到 -lsmbclient
collect2: error: ld returned 1 exit status
没有找到库的路径,所以使用 -L 添加库的路径
gcc -o test main.c -L. -lsmbclient -ltalloc -ltevent
编译成功,但执行的时候出现问题。猜想可能是LD_LIBRARY_PATH变量未设置的问题
根据 https://www.cprogramming.com/...
设置变量,并且能够肯定变量值设置成功,程序正常运行,但结果还是不正确。
执行
ldd test | grep smbclient
libsmbclient.so.0 => /usr/lib/x86_64-linux-gnu/libsmbclient.so.0 (0x00007fdbb6561000)
程序链接的是系统中的库而不是本地的库,所以执行结果不对。
但我设置了$LD_LIBRARY_PATH的值并没用。
我又测试了使用 rpath 参数设置路径,但ldd的结果还是不对
链接器读取到了-L设置了库的路径,并且找到了库,那为何链接进去的值是系统的?求助!!!
$ pwd
/home/chenzhen/packSource/my_samba
$ ls
get_auth_data_fn.h libsmbclient.h libsmbclient.so libtall