Linux版的生成过程

获取源代码

我们使用git和GitHub来维护源代码,首先克隆代码到本地:

git clone --recursive https://github.com/ethereum/cpp-ethereum.git
cd cpp-ethereum

这个参数非常重要 --recursive 这个参数非常重要,它指明了编译工程所必需的子模块,如果没有使用这个参数而导致编译时发生错误,你可以使用下面的命令来获取子模块弥补错误: git submodule update --init.

CMake

我们使用CMake来控制工程的配置,尽可能新的版本是必须的(写这篇文档时最新的CMake版本号是3.4)。我们推荐从下面的链接下载和解压最新发布的CMake版本:

https://cmake.org/download/

替代方案

上一步获取的代码目录中包含名为 install_cmake.sh 的脚本,这个脚本可以帮你安装指定版本的CMake到prefix参数指定的目录下,你可以这样使用::

``scripts/install_cmake.sh --prefix /usr/local``

安装依赖项

下面列出的 库文件 需要被预先安装在系统中:

  • boost
  • leveldb
  • curl
  • microhttpd
  • miniupnp
  • gmp

这些一般都可以通过软件安装管理器进行安装,例如基于Debian的系统可以使用如下命令:

sudo apt-get install libboost-all-dev libleveldb-dev libcurl4-openssl-dev libmicrohttpd-dev libminiupnpc-dev libgmp-dev

或基于RedHat的系统:

dnf install boost-devel leveldb-devel curl-devel libmicrohttpd-devel miniupnpc-devel gmp-devel

Linux has a horror-show of fragmentation when it comes to packaging systems.

我们提供一个一键脚本来引道使用其他发行版系统的用户通过这片雷区,它会自动识别用户安装的版本,并且安装系统所需要的外部依赖包。这是个不平凡的任务,我们不想让用户去自己替换他们所需要的内容。

scripts/install_deps.sh

我们使用相同的脚本实现自动化构建和持续集成,它会被不断测试,这对于MacOS尤为重要,Homebres是一个不断更新的目标。

如果你尝试使用了它,并且出现了任何问题,请把你的详细信息提交到: report the problem 并且带上你的发行版的详细信息,包括但不限于名称、版本号等这些重要信息,我们可以一起解决你遇到的问题。

我们还有更多的说明文档,针对 Fedora, openSUSE and Arch Linux (更多信息参见下文),如果你还使用别的发行版本,请让我们知道我们会尽量让它可以工作。

通过命令行进行生成

当你完成了上面所列出的依赖项的安装,就可以使用下面的命令进行了编译了:

mkdir build                                              Make a directory for the build output
cd build                                                 Switch into that directory

cmake ..                                                 To generate a makefile.
make                                                     To build that makefile on the command-line
make -j<number>                                          (or) Execute makefile with multiple cores in parallel

32位的Linux编译

我们在很多32位的Linux发行版中,成功生成并运行了以太坊客户端,最大的挑战来自于32位系统可用的外部依赖项,最大的需求可能来自于像树莓派这样的单板电脑。

你需要金庸JIT和重量级的依赖项LLVM,EVMJIT只支持x86_64架构,这样才能让cpp-ethereum在32位平台上运行。想要禁用JIT,你需要在Makefile阶段使用下面的命令

cmake .. -DEVMJIT=Off