我如何编译比特币核心以使其更具可移植性?

问题描述 投票:0回答:1

背景:我在一个系统上编译bitcoind但在另一个系统上运行它。当我使用以下方法重新编译bitcoind 0.19.1时,我能够在目标系统上运行bitcoind和bitcoin-cli而没有问题。 我认为

./autogen.sh
./configure --disable-wallet --disable-tests --disable-bench --disable-gui --enable-util-tx=no --prefix=$HOME/bitcoind/x64 --exec-prefix=$HOME/bitcoind/x64
make && make install

今天,我使用相同的方法编译了v0.20.0。如果我在系统上运行./bitcoind -version,则编译二进制文件可以正常运行,但是如果将二进制文件带到目标系统,则会出现以下错误:

./bitcoind: error while loading shared libraries: libboost_filesystem.so.1.67.0: cannot open shared object file: No such file or directory

该二进制文件上次似乎是可移植的,并且我从Bitcoin Core团队下载的预编译二进制文件运行良好。

请注意,未安装目标系统libboost-filesystem-devlibboost-filesystem1.67-dev,这可能是我的错误的根源。就是说,运行来自Core团队的预编译二进制文件会运行,那么为什么不进行挖掘?

有人可以帮助我了解我是否做错了什么,或者是否需要添加./configure标志以使二进制文件更具可移植性?具体来说,我所做的工作可能与使我的二进制文件在工作所在的地方失败的核心开发人员有所不同?

编辑1:运行./configure --enable-static./configure LDFLAGS=-static也不会生成可移植的二进制文件。

还请注意,使用apt安装libboost-filesystem库确实可以修复该错误。

背景:我在一个系统上编译bitcoind但在另一个系统上运行它。当我使用以下方法重新编译bitcoind 0.19.1时,我能够在目标上运行bitcoind和bitcoin-cli ...

gnu-make bitcoind
1个回答
0
投票

这在比特币StackExchange上非常有帮助。我需要按照depends documentation建立依赖。由于我正在为将要在其上运行的同一平台进行构建,因此我可以在-s2之外的任何目录中运行make,除了-j2使用两个内核。将编号更改为要提交编译的内核数。

© www.soinside.com 2019 - 2024. All rights reserved.