首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KDevelop4:加载共享库时出错

KDevelop4:加载共享库时出错
EN

Stack Overflow用户
提问于 2014-01-28 15:19:17
回答 2查看 3.1K关注 0票数 1

我第一次尝试使用Intel MKL库。我正在使用CMake构建一个使用MKL的简单项目。我在KDevelop 4.6环境中工作。

该项目的构建和安装没有错误。因此,链接库是成功的。在KDevelop中执行时,我得到以下错误:

Error while loading shared libraries: libmkl_intel_lp64.so: cannot open shared object file: No such file or directory

CMakeLists文件基本上如下所示:

代码语言:javascript
复制
project(testmkl)

cmake_minimum_required(VERSION 2.6)

enable_language(Fortran)

set(CMAKE_C_FLAGS "-std=c99 -Wall -lpthread") 
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")

# MKL
find_package(MKL REQUIRED)
include_directories(${MKL_INCLUDE_DIR})

find_package(M REQUIRED)
include_directories(${M_INCLUDES})

add_executable(testmkl ./main.c)
target_link_libraries(testmkl ${M_LIBRARIES} ${MKL_BLAS} ${MKL_LAPACK} ${MKL_INTEL} ${MKL_SEQUENTIAL} ${MKL_CORE})
install(TARGETS testmkl DESTINATION .)

libmkl_intel_lp64.so位于LP_LIBRARY_PATH环境变量的第一个文件夹中,因此在执行过程中不会出现任何错误。实际上,当从命令窗口运行程序时,一切似乎都正常。

可执行文件的ldd输出是:

代码语言:javascript
复制
>> ldd ./testmkl
linux-vdso.so.1 =>  (0x00007fff951fe000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003061a00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003061200000)
libmkl_intel_lp64.so => /opt/intel/composer_xe_2013_sp1.0.080/mkl/lib/intel64/libmkl_intel_lp64.so (0x00007f6f65ef6000)
libmkl_sequential.so => /opt/intel/composer_xe_2013_sp1.0.080/mkl/lib/intel64/libmkl_sequential.so (0x00007f6f65846000)
libmkl_core.so => /opt/intel/composer_xe_2013_sp1.0.080/mkl/lib/intel64/libmkl_core.so (0x00007f6f64317000)
libc.so.6 => /lib64/libc.so.6 (0x0000003060e00000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003060600000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003061600000)

因此正确地找到了链接库。为什么程序不能在KDevelop环境中工作?

欢迎任何帮助,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-28 22:30:00

第一个简短的问题:您是从终端执行程序还是试图从KDE gui执行(例如双击)?

在许多linux上,现在不推荐LD_LIBRARY_PATH。由于/etc/ld.so.conf/etc/ld.so.conf.d中列出的内容,LD找到了依赖项。您可能需要在某个地方添加一个脚本来包含您的库。实际上,您只需在这些脚本中向库添加路径即可。

来自/etc/ld.so.conf/libc.conf的示例:

代码语言:javascript
复制
# libc default configuration
/usr/local/lib

这可能对你有用。

编辑:您还应该运行ldconfig来更新LD数据库和/或使用ldconfig -v,这与扩展输出相同

edit2:ldconfig可能需要根权限才能被GUI理解

票数 2
EN

Stack Overflow用户

发布于 2016-04-10 13:23:29

我也有同样的问题,现在通过在kdevelop中配置环境变量来解决这个问题。

  1. 转到project->open configuration
  2. 选择make选项卡
  3. 单击活动环境配置文件栏中的设置图标并添加您的环境变量: LD_LIBRARY_PATH =/您的/共享/库/路径
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21409558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档