C++共享对象依赖
c++ shared object dependencies
.so 编译 ldd 命令后 returns 3 未知依赖项。
libboost_regex-gcc41-mt-1_35.so.1.35.0 => not found
libsqlapi.so => not found
libsqlapiu.so => not found
尽管它们在 makefile 中指定并存在于机器(RH 64 位)中。
LD_LIBRARY_PATH 未设置(需要不更改的解决方案)
libMakeMeHappy_so_LDADD = -L/usr/local/lib64/ -lboost_regex-gcc41-mt -lsqlapi -lsqlapiu
任何评论为什么以及如何防止它?
首先,您需要找出那些丢失的库在您的机器上的位置。他们可能在 /usr/local/lib64/
那么您可以选择以下 3 个选项之一:
设置 LD_LIBRARY_PATH
环境变量指向 /usr/local/lib64/
更新全局库路径:
- 将
/usr/local/lib64/
添加到 /etc/ld.so.conf
- 运行
ldconfig
将 /usr/local/lib64/
添加为您的共享库(或使用您的库的可执行文件)的库路径
- 链接时添加链接器标志
-Wl,-rpath,/usr/local/lib64/
共享库或可执行文件。
.so 编译 ldd 命令后 returns 3 未知依赖项。
libboost_regex-gcc41-mt-1_35.so.1.35.0 => not found
libsqlapi.so => not found
libsqlapiu.so => not found
尽管它们在 makefile 中指定并存在于机器(RH 64 位)中。
LD_LIBRARY_PATH 未设置(需要不更改的解决方案)
libMakeMeHappy_so_LDADD = -L/usr/local/lib64/ -lboost_regex-gcc41-mt -lsqlapi -lsqlapiu
任何评论为什么以及如何防止它?
首先,您需要找出那些丢失的库在您的机器上的位置。他们可能在 /usr/local/lib64/
那么您可以选择以下 3 个选项之一:
设置
LD_LIBRARY_PATH
环境变量指向/usr/local/lib64/
更新全局库路径:
- 将
/usr/local/lib64/
添加到/etc/ld.so.conf
- 运行
ldconfig
- 将
将
/usr/local/lib64/
添加为您的共享库(或使用您的库的可执行文件)的库路径- 链接时添加链接器标志
-Wl,-rpath,/usr/local/lib64/
共享库或可执行文件。
- 链接时添加链接器标志