我有一个关于使用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)
执行后。
通过Google搜索搜索相关问题后,我发现了这一点 取代
link_directories(/opt/OpenBLAS/lib)
与
link_directories(/opt/OpenBLAS)
可以解决我的问题。 也就是说,我可以成功构建程序并在没有的情况下执行它 错误信息。
我很困惑,但我找不到任何材料来实现它。 谁能告诉我为什么会这样? 非常感谢!