1

初めてインテル® 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 ファイルは基本的に次のようになります。

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 環境で動作しないのはなぜですか?

どんな助けでも大歓迎です、ありがとう!

4

2 に答える 2