我必须安装"libbitcoin-server"才能包含"bitcoin.hpp"
Do I have to install `libbitcoin-server` to be able to include `bitcoin.hpp`?
我正在阅读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.hpp
到bitcoin/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
系统,例如boost
并secp256k1
它也安装了libbitcoin-server
。
按照另一个答案中的建议只安装它的一部分对我不起作用,因为缺少无法正确链接的依赖项。
关于swap
我可以说它在外部硬盘上的 4GB 交换文件中工作正常,尽管 RPi2 的有效带宽只有 20MB/s。
为了能够使用该库,我在编译程序时必须给出--static
属性:
g++ -o addr 69_addr2.cpp $(pkg-config --cflags --libs --static libbitcoin)
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 编译包含字符串的代码时遇到问题
- c++库的公共头文件中应该包含什么
- 将包含C样式数组的对象初始化为成员变量(C++)
- 是否需要删除包含对象的"pair"?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 使用mongocxx驱动程序时包含头文件问题
- 如何在h文件中包含.o对象文件
- 在混合代码库中将C转换为C++时出现许多包含错误
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- cmath抛出错误C2062、C2059、C2143和C2447.cmath包含在矢量文件中
- 为什么您需要C++头文件的包含保护
- 无法在UE4中包含BP类到CPP类
- g++ 说函数不存在,即使包含正确的标头
- 在C++代码中包含opencv时,使用ctypes创建.so文件
- Visual C++GC接口如何启用它以及要包含哪个库
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 我必须安装"libbitcoin-server"才能包含"bitcoin.hpp"