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 个选项之一:

  1. 设置 LD_LIBRARY_PATH 环境变量指向 /usr/local/lib64/

  2. 更新全局库路径:

    • /usr/local/lib64/ 添加到 /etc/ld.so.conf
    • 运行 ldconfig
  3. /usr/local/lib64/ 添加为您的共享库(或使用您的库的可执行文件)的库路径

    • 链接时添加链接器标志-Wl,-rpath,/usr/local/lib64/ 共享库或可执行文件。