我如何编译比特币核心更便携?
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-dev
和 libboost-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
背景:我在一个系统上编译 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-dev
和 libboost-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