我在加载动态库时遇到了问题dlopen()
:
我尝试加载一个库:
handle = dlopen("libmkl_intel_lp64.so", RTLD_LAZY);
此代码失败并显示以下消息dlerror()
:
/opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_intel_lp64.so: undefined symbol: mkl_vsl_serv_threader_for
我知道这个符号可以在另一个图书馆找到,libmkl_gnu_thread.so
例如。如果使用LD_PRELOAD
要加载该库,上述未定义符号上的错误就会消失。但是我如何在不使用的情况下使这个符号可用LD_PRELOAD
?
如果是显式链接,我会列出所有库,但我不确定使用的情况下的逻辑是什么dlopen()
您需要向 .so 文件添加依赖项。这些依赖关系显示为ldd
命令。它们以多种方式添加 - 最常见的是编译 .so 时,添加-l<dep>
添加依赖项<dep>.so
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)