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)
私の問題を解決できます。つまり、プログラムを正常にビルドし、エラー メッセージなしで実行できます。
私は混乱していますが、それを実現するための資料が見つかりません。なぜこれが起こったのか誰か教えてもらえますか?どうもありがとう!