bitcoindのCMakeで詰まった時の作業ログ
FreeUPNPUrls見つからないよエラー
code: error log
98% Linking CXX executable bitcoind Undefined symbols for architecture x86_64:
"_FreeUPNPUrls", referenced from:
src/CMakeLists.txtのtarget_link_librariesにminiupnpcを追加したら治った。
code: CMakeLists.txt sample
target_link_libraries(server
Event
bitcoinconsensus
leveldb
memenv
miniupnpc # <-これを追加
)
miniupnpc.hは/usr/local/include/miniupnpc/以下に入っていることはCLionさんが教えてくれた。
sha256_shani::Transformでリンカーエラー
最終的には、config/bitcoin-config.hの中で定義されてた以下の該当行をコメントアウトしたら解決した。
code: bitcoin-config.h
/* Define this symbol to build code that uses AVX2 intrinsics */
//#define ENABLE_AVX2 0
/* Define this symbol to build code that uses SHA-NI intrinsics */
//#define ENABLE_SHANI 0
/* Define this symbol to build code that uses SSE4.1 intrinsics */
//#define ENABLE_SSE41 0
#if definedの判定の場合は、そのdefine変数が定義されているか否かでしか判断してないぽくて、#ifdefだとその変数の値が0か1かで判定変わるっていう理解でいいのかな? bitcoin-config.h自体が残っていることで色々CMakeで不都合起きてる気がしないでも無い。