我如何编译比特币核心更便携?

How do I compile bitcoin core to be more portable?

背景:我在一个系统上编译 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

上次的二进制文件似乎是可移植的,我从比特币核心团队下载的预编译二进制文件运行没问题。

请注意,在目标系统上未安装 libboost-filesystem-devlibboost-filesystem1.67-dev,这可能是我的错误来源。也就是说,运行从核心团队 运行s 中获取预编译的二进制文件,那为什么我的不呢?

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

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

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

感谢 Andrew Chow 在 bitcoind StackExchange 上对此的有益回答。我需要根据 depends documentation 构建依赖项。由于我正在为相同的平台构建,我将 运行 继续,我可以 运行 在 depends 目录中创建,除了使用两个内核的 -j2 之外没有任何参数。将数字更改为您要提交给编译的内核数。

cd depends
make -j2
cd ..
./autogen.sh
./configure --prefix=$PWD/depends/x86_64-pc-linux-gnu
make -j2 && make install