我必须安装"libbitcoin-server"才能包含"bitcoin.hpp"

Do I have to install `libbitcoin-server` to be able to include `bitcoin.hpp`?

本文关键字:quot 包含 bitcoin hpp libbitcoin-server 安装      更新时间:2023-10-16

我正在阅读Antonopoulos的"掌握比特币"一书,并想从这本书中编译一个例子。它不会告诉需要安装哪个C++库才能#include <bitcoin/bitcoin.hpp>工作。

#include <bitcoin/bitcoin.hpp>
int main()
{
// Private secret key.
bc::ec_secret secret;
bool success = bc::decode_base16(secret,
"038109007313a5807b2eccc082c8c3fbb988a973cacf1a7df9ce725c31b14776");
assert(success);
// Get public key.
bc::ec_point public_key = bc::secret_to_public_key(secret);
std::cout << "Public key: " <> bc::encode_hex(public_key) << std::endl;

// Create Bitcoin address.
// ... further comments

// Compute hash of public key for P2PKH address.
const bc::short_hash hash = bc::bitcoin_short_hash(public_key);

bc::data_chunk unencoded_address;
// Reserve 26 bytes
// ...
unencoded_address.reseve(25);
unencoded_address.push_back(0);
bc::extend_data(unencoded_address, hash);
bc::append_checksum(unencoded_address);
assert(unencoded_address.size() == 25);
const std::string address = bc::encode_base58(unencoded_address);

std::cout << "Address: " << address << std::endl;
return 0;
}

编译应该像这样完成:

g++ -o addr addr.cp $(pkg-config --cflags --libs libbitcoin)

运行./addr应给出输出:

"Public key: ..."
"Address: ..."

由于代码库已经有很多变化,因此不清楚如何处理包含。其中一个代码不再可用。

将 libbitcoin/libbitcoin-system 存储库的 83f36c901a3f45e8ab667f1db283d72e75a58176 重命名为bitcoin/bitcoin.hppbitcoin/system.hpp

看起来您可以使用典型的./autogen.sh && configure && make && make install步骤安装它。之后,您可以创建bitcoin/system.hpp的副本或调整客户端代码。

我需要安装的是库libbitcoin,或者更准确地说是"比特币跨平台C++开发工具包"libbitcoin-system

但是由于解决这个问题的最好方法是从这里使用 debian 的自动安装脚本:

$ sudo apt-get install build-essential autoconf automake libtool pkg-config git
$ wget https://raw.githubusercontent.com/libbitcoin/libbitcoin/version3/install.sh
$ chmod +x install.sh
$ ./install.sh --prefix=/home/me/myprefix --build-boost --disable-shared

这安装了具有所有依赖项的整个libbitcoin系统,例如boostsecp256k1它也安装了libbitcoin-server

按照另一个答案中的建议只安装它的一部分对我不起作用,因为缺少无法正确链接的依赖项。


关于swap我可以说它在外部硬盘上的 4GB 交换文件中工作正常,尽管 RPi2 的有效带宽只有 20MB/s。


为了能够使用该库,我在编译程序时必须给出--static属性:

g++ -o addr 69_addr2.cpp $(pkg-config --cflags --libs --static libbitcoin)