Altcoin-Development

將 C 庫添加到 Makefile

  • January 8, 2019

我正在使用一種用 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 但它可以工作。

引用自:https://bitcoin.stackexchange.com/questions/83433