以太坊连载(八):C++客户端的安装与定制(二)
cpp-ethereum 代码库在几个Git库中传播,库在Git上被分组为webthree-umbrella库下的子模块。 我们用一般的CMake编译系统来生成平台特定的架构文件,这意味着工作流程和你用的任何操作系统都非常类似: 安装编译工具和外部程序包(这些是平台独立的) 从webthree-umbrella git库克隆源代码 运行CMake来生成编译文件(makefile,Visual Studio解决方案等) 编译 为Linux创建 注意 —— 通过从源建立和禁用 VMJIT及其他特征,也能够让客户端适用于32位 Ubuntu。我们可能会接受 pull请求来增加这样的支持,但不会投入任何时间来专门开发支持 Ubuntu 32位架构。 Linux有个发行版特定程序包系统步骤的幻灯片,这是我们在开始从源建立之前要做的第一件事。下面的章节试图体现这些步骤。如果你正在使用不同的发行版和hit版本,请告诉我们。 克隆资源库 要克隆源代码,请执行以下指令: git clone —recursive https://github.com/ethereum/webthree-umbrella.git Ubuntu Trusty Tahr (14.04) 步骤: Ubuntu Utopic Unicorn (14.10) 步骤: Ubuntu Vivid Vervet (15.04) 步骤: Ubuntu WilyWerewolf (15.10) 步骤: Ubuntu Xenial Xerus (16.04) 步骤: Fedora 20 步骤: Fedora 21 步骤: 从github建立json-rpc作为每个https://github.com/ethereum/cpp-ethereum/issues/617: Fedora 22 Fedora 22依赖可能会比已经安装的更多: 安装 gcc 4.9版本!Fedora 22 和一个不同的编译器 (CC v5.3)一起。它 不能编译 webthreeumbrella,所以我从SRC安装了 gcc 4.9版本! 检查一下你有可用的 gcc4.9安装在/usr/local ,我把它安装在了 /home/app/gcc49,你可以自己选择在google上阅读说明怎么编译 gcc! 以后在每个 cmake之前,你都要这样用gcc4.9编译 webthree-umbrella所需的所有东西: 有了这个,你用 gcc4.9而不是和发行版F22一起的来编译。不推荐卸载和你发行版一起的编译器!你也可以用符号链接来工作。 从 Fedora COPR REPO LLVM3.7安装,使用: 我必须要这样做是因为 Fedora 22从股票资源库和 llvm-3.5一起!可能也有其他解决方法,但是这个方法对我来说管用。 从 SRC安装CryptoPP https://github.com/weidai11/cryptopp CRYPTOPP_5_6_2: 从COPR “dnf copr enable @kdesig/Qt5”安装QT5,更新的QT5版本: 这应该在 COPR repo安装QT5 5.6.0 版本。 其他用户的程序包,我没有测试。 从 https://github.com/qtproject/qtwebengine 安装 qtwebengine,我安装5.6.0 版本,其他的也有用,找找看 :D 从github安装json-rpc https://github.com/ethereum/cpp-ethereum/issues/617%EF%BC%9A 确保检查jsonrpcstub是否在控制台有效,输入“jsonrpcstub” 查看是否有回答。如果答案是没有参数或s-l-t,就说明有效,但如果没有得到的文件,你就得把丢失的部分符号连接到libs dir /usr/local/lib64或者usr/local/lib,取决于文件blabla的位置。试着用 “updatedb” 找到然后“locate blabla.so” 现在试着编译,应该会有效,否则就是有丢失的符号连接因为没有这样的易嵌适文件或有一些丢失的数据包,试着用像这样“dnf search packname”或 “dnf list packname”的dnf找到它们。我要说的是这不是个5分钟的webthree-umbrella编译,享受Tflux99。 这是为在OpenSUSE上建立最新webthreeumbrella获取所需依赖的方法。它在Leap 42.1上完成了,但是应该有Tumbleweed和13.x可用的同等数据包。 主要资源库提供的第一个依赖: 可以用通用的libOpenCL1,但是我只用来自AMD驱动器资源库fglrx64_opencl_SUSE421的AMD 专有包测试过。 这些包裹不在标准的资源库,但是可以用OpenSUSE 创建服务包搜索和YaST 1-Click安装找到: libargtable2-devel libv8-3 v8-devel 为OpenSUSE安装依赖 在Arch Linux编译webthree-umbrella需要来自官方资源库和Arch User资源库(AUR)的依赖。要从官方资源库安装,使用pacman。要从AUR安装包裹,有很多可用的AUR助手。 在本指南中,使用的是AUR助手yaourt。 编译源代码 在这一步,可以规定以太坊安装文件夹,尽管文件夹的规定是可选的。如果不指定,二进制文件夹会位于创建文件夹。然而,就本向导,假定以太坊文件会被安装在/opt/eth下面。使用/opt的原因是比起安装在比如说/usr下面,这样能使以后删除以太坊文件夹更容易。而且/opt通常用于安装不受包裹系统管理的软件,比如手动编译程序。 成功编译和安装之后,以太坊二进制可以在/opt/eth/bin,/opt/eth/lib的共享库和/opt/eth/include标题文件中找到。 规定以太坊库路径 由于以太坊被安装在/opt/eth,执行它的二进制会导致不能找到以太坊共享库引起的链接错误。为纠正这个问题,需要将包含以太坊共享库的文件添加到LD_LIBRARY_PATH环境变量: Debian Jessie (8.5) 警告:GUI应用没有在Debian上尝试过。所以,不用GUI应用创建要使用:cmake .. -DGUI=0 步骤: 确保你安装的是cmake version 3.5.2。如果apt-get安装了一个旧版本,需要按照这个链接里的指示,把它从源编译。 要安装cryptopp,很有必要从创建: 测试安装: 验证结果,再进行一个测试: 验证成功?继续: CryptoPP安装完成! 现在从源安装LLVM建立: 回到apt-get: 从源安装json-rpc-cpp建立: 在命令行建立 只有在你安装完依赖以后(文件的剩余部分!) 我们只支持64位架构并且只适用于以下Windows版本: Windows 7 Windows 8/8.1 Windows 10 Windows Server 2012 R2 通过从源建立和禁用VMJIT及其他特征,也能够让客户端适用于32位Windows。我们可能会接受拉取请求来增加这样的支持,但不会投入任何时间来专门开发支持Windows32位架构。 首要之事 你需要安装下面的依赖 软件备注 Git for Windows从Github检索源的命令行工具CMake交叉平台建构文件生成器Visual Studio 2015C++编译器和dev环境 获取源 通过执行下面命令来克隆包含所有源代码的git资源库: 获取外部依赖 执行CMake脚本,下载并打开建立项目所需的先建的外部二进制: 通用Visual Studio项目文件 然后执行下列指令,它会用CMake生成Visual Studio解决方案文件: 这会导致在建立目录中创建cpp-ethereum.sln。 双击文件会启动Visual Studio。我们建议建立RelWithDebugInfo配置,但是所有其他都有效。 在命令行建立 或者,你可以在命令行建立这个项目,像这样: 概览 – 龙来了! 我们不可能避免OS X建立中断,因为Homebrew是 “滚动发布”程式包管理者,这意味着平面会一直移动到我们下面,除非我们把所有的外部依赖都添加到Homebrew分接头,或者把它们作为git子模块添加到umbrella项目。Enduser 的结果随着建立项目的时间而变化。昨天建立可能有效,但不能保证你的朋友今天在他们的机器上建立也会有同样的结果。毋庸置疑,这不是个让人高兴的情况。 如果你撞上了OS X建立中断,请浏览Github问题查看你遇到的问题是否已经被报告过。如果是,请在现存的问题下面评论。如果没有看到任何相似的问题,请创建一个新问题,具体描述你的OS X版本,cpp-ethereum 版本,硬件及其他你认为相关的细节。 请通过gist.github.com或相似服务添加verbose日志文件。 cpp-ethereum-development gitter频道是我们常去的地方,在那里共同合作解决问题。 我们只支持两个最新的OS X 版本: OS X Yosemite (10.10) OS X El Capitan (10.11) cpp-ethereum代码基在旧版本的OS X上不能建立,我们一向不支持。 如果你在用旧版本的OS X,我们推荐你更新到最新版本,不仅仅是为了建立cpp-ethereum,也是为了你的安全考虑。 首要之事和外部依赖 确保你有最新版本的xcode安装。这包括Clang C++ 编译器,xcode IDE和其他在OS X上建立C++应用所必须的苹果开发工具。如果你是第一次安装xcode,或是刚刚安装了一个新版本,你需要在进行命令行建立之前接受许可: 如果你想建立图形用户界面应用(AlethZero和Mix),你需要安装XQuartz X11Window系统,因为OS X上的Qt使用那个X11层。 我们的OS X建立需要你安装Homebrew程式包管理者,以安装外部依赖。 如果你想从头开始,这是卸载Homebre的方法。 使用Homebre安装所有必须的外部依赖 下面是建立图形用户界面应用: 注意1:Qt5步骤在大多数人机器上花费很多小时。这是因为它使用非默认的设置,会导致从源建立。它似乎使用大约20G临时磁盘空间。当心! 注意2:Qt和Qt5程式包不能在Homebrew共存。如果你已经安装了Qt,你需要在成功建立cpp-ethereum之前卸载它: 克隆资源库 克隆源代码,执行下列命令: 你可以生成Makefile并在命令行上建立,或者生成X代码项目,在IDE建立。 命令行建立 从项目根: 安装你自己的建立 你也可以用同样的Makefile,在你的机器上全局安装你自己的建立: 生成xcode项目 从项目根: 这会生成叫做cpp-ethereum.xcodeproj的Xcode项目文件,你可以用x代码和build/debug/run打开。 为FreeBSD建立 注意-程式包一旦在FreeBSD主要端口中,这个指南应该变得更简单。 手动安装端口 对于一些步骤,你必须要求修正端口目录的根权限。 webthree-umbrella取决于libjson-rpc-cpp.shar,它也不在端口系统中。 首先你要下载shar文件,把它放在“devel”会话下的端口目录,通常是/usr/ports/devel 现在我们用以下执行脚本: 这会创建libjson-rpc-cpp端口。现在你应该为webthree-umbrella端口做同样的事,我们应该获得webthree-umbrella文件并在“net-p2p”目录下创建端口。 创建与安装 现在你可以导航到webthree-umbrella目录并安装端口: 我们现在没有有效的Android建立,尽管它在doublethinkco的路径图中。Android使用Linu内核,但是与ARM Linux交叉建立有不同的应用程序界面,意味着需要特定的二进制。 ARM Linux发行版使用GLIBC执行库,Android使用bionic。 我们现在没有有效的iOS建立,尽管它在doublethinkco的路径图中。iOS是类似UNIX的操作系统,基于Darwin (BSD),使用ARM芯片。这是与ARM Linux交叉建立不同的应用程序界面,意味着需要特定的二进制。 EthEmbedded 为所有的Raspberry Mi模块保持建立脚本。它们在Raspi-Eth-Install资源库的Github上。也可能为这些平台交叉建立。 EthEmbedded为Odroid模块保持建立脚本。支持更多的Odroid设备在将来是有可能的。它们在OdroidXU3-Eth-Install资源库的Github上。也可能为这些平台交叉建立。 EthEmbedded为BBB-Eth-Install资源库里Github上的BBB保持建立脚本。也可能为这个平台交叉建立。 EthEmbedded为WandBoard-Eth-Install资源库里Github上的WandBoard保持建立脚本。也可能为这个平台交叉建立。 doublethinkco保持基于Docker的交叉建立基础设施,它寄宿在cpp-ethereum-cross资源库的Github上。 在写本文档时,这些交叉建立二进制已经成功地使用在以下设备上: Jolla Phone (Sailfish OS) Nexus 5 (Sailfish OS) Meizu MX4 Ubuntu Edition (Ubuntu Phone) Raspberry Pi Model B+, Rpi2 (Raspbian) Odroid XU3 (Ubuntu MATE) BeagleBone Black (Debian) Wandboard Quad (Debian) C.H.I.P. (Debian) 待办的有: Tizen Android iOS |
2018-06-24
2018-11-20
2019-01-10
2019-01-10
2019-01-10
2019-11-14
2019-11-14
2019-11-14
2019-11-13