【发布时间】:2011-01-29 20:49:19
【问题描述】:
我正在构建一个使用 Intel 的 IPP 库的 C++ 应用程序。该库默认安装在 /opt 中,并且需要您设置 LD_LIBRARY_PATH 来编译和运行您的软件(如果您选择共享库链接,我这样做了)。我已经修改了我的configure.ac/Makefile.am,以便在编译时不需要设置该变量,但在运行时仍然找不到共享库;我该怎么做?
我正在使用g++ 使用-Wl, -R/path/to/libdir 标志进行编译
更新 1: 实际上我的二进制程序有一些正确链接的 IPP 库,但只有一个没有:
$ ldd myprogram
linux-vdso.so.1 => (0x00007fffa93ff000)
libippacem64t.so.6.0 => /opt/intel/ipp/6.0.2.076/em64t/sharedlib/libippacem64t.so.6.0 (0x00007f22c2fa3000)
libippsem64t.so.6.0 => /opt/intel/ipp/6.0.2.076/em64t/sharedlib/libippsem64t.so.6.0 (0x00007f22c2d20000)
libippcoreem64t.so.6.0 => /opt/intel/ipp/6.0.2.076/em64t/sharedlib/libippcoreem64t.so.6.0 (0x00007f22c2c14000)
[...]
libiomp5.so => not found
libiomp5.so => not found
libiomp5.so => not found
图书馆当然在那里:
$ locate libiomp5.so
/opt/intel/ipp/6.0.2.076/em64t/sharedlib/libiomp5.so
【问题讨论】:
-
我可能需要将问题更改为其他问题,但我需要建议,我缺乏想法
-
嗯,我想知道那个人也缺少版本号扩展是否是巧合 - 也许 IPP 只是没有安装自己吗?
-
我想知道丢失的库是否不是您的程序引用的,而是您引用的库?
-
@Richard:这是一个非常好的想法。您可以使用 LD_RUN_PATH 或适当的链接器选项编译 IPP(或其他 IPP 相关库)。
-
@Richard:你可能是对的,我记得读过类似的东西,libiomp5.so 是来自英特尔的线程库(MKL 的 IIRC 部分)。问题是我无法重新编译 IPP,因为它们不是 OSS...
标签: c++ g++ shared-libraries autotools intel-ipp