作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
构建可执行文件的命令:g++ -I../include/redis -L../lib/redis redis.cpp -o redis -lhiredis
描述:
我在 ../lib/redis/
中有 libhiredis.so
。而在/usr/local/lib/hiredis13/
中,有libhiredis.so
和libhiredis.so.0.13
,这个libhiredis .so
是指向libhiredis.so.0.13
的符号链接(symbolic link)。然后我ldd redis
,结果如下:
linux-vdso.so.1 => (0x00007ffd227f7000)
libhiredis.so.0.13 => not found
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f7ebca0d000)
libm.so.6 => /lib64/libm.so.6 (0x00007f7ebc70b000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f7ebc4f5000)
libc.so.6 => /lib64/libc.so.6 (0x00007f7ebc132000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7ebcd23000)
Gcc 应该链接到 ../lib/redis/
中的 libhiredis.so
,对吗?
最佳答案
可能您的库有一个 SONAME
(libhiredis.so.0.13
),所以程序会记录它而不是文件名。然后,在运行时,在通常的目录中搜索 SONAME
。
您的库位于 /usr/local/lib/hiredis13/
中,这不是通常的目录。解决方案是以下之一:
/etc/ld.so.conf
或/etc/ld.so.conf中添加/usr/local/lib/hiredis13
目录。 d/*
并重新运行 ldconfig
。LD_LIBRARY_PATH=/usr/local/lib/hiredis13
。-rpath
链接器选项。关于c++ - 如何在 gcc 中链接到我自己的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40233872/
我是一名优秀的程序员,十分优秀!