Altcoin-Development
將 C 庫添加到 Makefile
我正在使用一種用 C 語言編寫的新 PoW 算法開發山寨幣來測試算法。我在嘗試編譯時收到與編譯 C 程式碼相關的編譯錯誤。如何正確地將 C 程式碼添加到 Makefile?
我的 fork 基於 Bitcoin Core 0.12.1 我在 Ubuntu 16.04 上編譯
這是編譯錯誤:
CXXLD bitcoind /usr/bin/ld: crypto/libbitcoin_crypto.a(crypto_libbitcoin_crypto_a- rainforest.o): relocation R_X86_64_32S against `rf_crc32_table' can not be used when making a shared object; recompile with -fPIC crypto/libbitcoin_crypto.a: error adding symbols: Bad value
以下是我將文件添加到 src/Makefile.am 的方式:
# crypto primitives library crypto_libbitcoin_crypto_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_CONFIG_INCLUDES) crypto_libbitcoin_crypto_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) crypto_libbitcoin_crypto_a_SOURCES = \ crypto/common.h \ crypto/hmac_sha256.cpp \ crypto/hmac_sha256.h \ crypto/hmac_sha512.cpp \ crypto/hmac_sha512.h \ crypto/ripemd160.cpp \ crypto/ripemd160.h \ crypto/sha1.cpp \ crypto/sha1.h \ crypto/sha256.cpp \ crypto/sha256.h \ crypto/sha512.cpp \ crypto/sha512.h \ crypto/rainforest/rainforest.c \ crypto/rainforest/rainforest.h
文件是 rainforest.c 和 rainforest.h
抱歉這個問題,我是 C 和 C++ 開發的新手,我來自 Java 和 Python
編輯:我之前沒有提到我通過這樣做連結了 rainforest.h:
extern "C"{ #include "crypto/rainforest/rainforest.h" }
我可以通過編譯來解決這個問題
make -j2 CFLAGS="-fPIC"
那個解決方案不是那麼方便,我寧願修改 configure.ac 或 Makefile 但它可以工作。