0

我有一个关于使用 CMake 链接共享库的问题。

从源代码构建 OpenBLAS 并成功安装后。在 /opt/OpenBLAS/include 中有头文件,在 /opt/OpenBLAS/lib 中有共享库和静态库。

如果我有一个名为 cpp_gemm.cpp 的玩具程序,我可以通过键入来构建它

g++ -o cpp_gemm cpp_gemm.cpp -I/opt/OpenBLAS/include -L/opt/OpenBLAS/lib -lopenblas

并在没有错误消息的情况下执行它。

但是我想用 CMake 来构建它,所以我在 CMakeLists.txt 中编写了以下规则

cmake_minimum_required(VERSION 2.8.4)
project(CppGEMM)

include_directories(/opt/OpenBLAS/include)
link_directories(/opt/OpenBLAS/lib)
add_executable(cpp_gemm cpp_gemm.cpp)
target_link_libraries(cpp_gemm openblas)

在我创建构建文件夹并进入它之后,我输入

cmake ..
make

成功构建程序。但我会得到

Illegal instruction (core dumped)

执行后。

谷歌搜索相关问题后,发现replace

link_directories(/opt/OpenBLAS/lib)

link_directories(/opt/OpenBLAS)

可以解决我的问题。也就是说,我可以成功构建程序并执行它而不会出现错误消息。

我很困惑,但我找不到任何材料来实现它。谁能告诉我为什么会这样?非常感谢!

4

0 回答 0