gpt4 book ai didi

c - KDevelop4:加载共享库时出错

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:44 24 4
gpt4 key购买 nike

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

项目构建和安装没有错误。这样链接库就成功了。在 KDevelop 中执行时,出现以下错误:

加载共享库时出错:libmkl_intel_lp64.so:无法打开共享对象文件:没有这样的文件或目录

CMakeLists 文件基本上如下所示:

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 输出是:

>> 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 环境中运行?

欢迎任何帮助,谢谢!

最佳答案

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

在许多 linux 操作系统上,现在 LD_LIBRARY_PATH 已被弃用。由于 /etc/ld.so.conf/etc/ld.so.conf.d 中列出的内容,LD 找到了依赖关系。您可能必须在某处添加脚本以包含您的库。事实上,您只需在这些脚本中添加您的库的路径。

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

# libc default configuration
/usr/local/lib

这可能对您有用。

编辑:您还应该运行 ldconfig 来更新 LD 数据库和/或使用 ldconfig -v,它的作用相同但具有扩展输出

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

关于c - KDevelop4:加载共享库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21409558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com