.. _Building Linux from source:

##################
Linux鐗堢殑鐢熸垚杩囩▼
##################


鑾峰彇婧愪唬鐮�
=======================

鎴戜滑浣跨敤git鍜孏itHub鏉ョ淮鎶ゆ簮浠g爜锛岄鍏堝厠闅嗕唬鐮佸埌鏈湴锛�

.. code:: bash

    git clone --recursive https://github.com/ethereum/cpp-ethereum.git
    cd cpp-ethereum
    
杩欎釜鍙傛暟闈炲父閲嶈 ``--recursive`` 杩欎釜鍙傛暟闈炲父閲嶈锛屽畠鎸囨槑浜嗙紪璇戝伐绋嬫墍蹇呴渶鐨勫瓙妯″潡锛屽鏋滄病鏈変娇鐢ㄨ繖涓弬鏁拌€屽鑷寸紪璇戞椂鍙戠敓閿欒锛屼綘鍙互浣跨敤涓嬮潰鐨勫懡浠ゆ潵鑾峰彇瀛愭ā鍧楀讥琛ラ敊璇細
``git submodule update --init``.


CMake
=====

鎴戜滑浣跨敤CMake鏉ユ帶鍒跺伐绋嬬殑閰嶇疆锛屽敖鍙兘鏂扮殑鐗堟湰鏄繀椤荤殑锛堝啓杩欑瘒鏂囨。鏃舵渶鏂扮殑CMake鐗堟湰鍙锋槸3.4锛夈€傛垜浠帹鑽愪粠涓嬮潰鐨勯摼鎺ヤ笅杞藉拰瑙e帇鏈€鏂板彂甯冪殑CMake鐗堟湰锛�

https://cmake.org/download/

    **鏇夸唬鏂规**
    
    涓婁竴姝ヨ幏鍙栫殑浠g爜鐩綍涓寘鍚悕涓�
    `install_cmake.sh <https://github.com/ethereum/cpp-ethereum/blob/develop/scripts/install_cmake.sh>`_ 
    鐨勮剼鏈紝杩欎釜鑴氭湰鍙互甯綘瀹夎鎸囧畾鐗堟湰鐨凜Make鍒皃refix鍙傛暟鎸囧畾鐨勭洰褰曚笅锛屼綘鍙互杩欐牱浣跨敤锛�::
    
	``scripts/install_cmake.sh --prefix /usr/local`` 


瀹夎渚濊禆椤�
=======================

涓嬮潰鍒楀嚭鐨� *搴撴枃浠�* 闇€瑕佽棰勫厛瀹夎鍦ㄧ郴缁熶腑锛�

- boost
- leveldb
- curl
- microhttpd
- miniupnp
- gmp

杩欎簺涓€鑸兘鍙互閫氳繃杞欢瀹夎绠$悊鍣ㄨ繘琛屽畨瑁咃紝渚嬪鍩轰簬Debian鐨勭郴缁熷彲浠ヤ娇鐢ㄥ涓嬪懡浠わ細

.. code:: bash

    sudo apt-get install libboost-all-dev libleveldb-dev libcurl4-openssl-dev libmicrohttpd-dev libminiupnpc-dev libgmp-dev
    
鎴栧熀浜嶳edHat鐨勭郴缁燂細

.. code:: bash

    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.

鎴戜滑鎻愪緵涓€涓竴閿剼鏈潵寮曢亾浣跨敤鍏朵粬鍙戣鐗堢郴缁熺殑鐢ㄦ埛閫氳繃杩欑墖闆峰尯锛屽畠浼氳嚜鍔ㄨ瘑鍒敤鎴峰畨瑁呯殑鐗堟湰锛屽苟涓斿畨瑁呯郴缁熸墍闇€瑕佺殑澶栭儴渚濊禆鍖呫€傝繖鏄釜涓嶅钩鍑$殑浠诲姟锛屾垜浠笉鎯宠鐢ㄦ埛鍘昏嚜宸辨浛鎹粬浠墍闇€瑕佺殑鍐呭銆�

.. code:: bash

    scripts/install_deps.sh

鎴戜滑浣跨敤鐩稿悓鐨勮剼鏈疄鐜拌嚜鍔ㄥ寲鏋勫缓鍜屾寔缁泦鎴愶紝瀹冧細琚笉鏂祴璇曪紝杩欏浜嶮acOS灏や负閲嶈锛孒omebres鏄竴涓笉鏂洿鏂扮殑鐩爣銆�

濡傛灉浣犲皾璇曚娇鐢ㄤ簡瀹冿紝骞朵笖鍑虹幇浜嗕换浣曢棶棰橈紝璇锋妸浣犵殑璇︾粏淇℃伅鎻愪氦鍒帮細
`report the problem <https://github.com/ethereum/cpp-ethereum/issues/new>`_
骞朵笖甯︿笂浣犵殑鍙戣鐗堢殑璇︾粏淇℃伅锛屽寘鎷絾涓嶉檺浜庡悕绉般€佺増鏈彿绛夎繖浜涢噸瑕佷俊鎭紝鎴戜滑鍙互涓€璧疯В鍐充綘閬囧埌鐨勯棶棰樸€�

鎴戜滑杩樻湁鏇村鐨勮鏄庢枃妗o紝閽堝 Fedora, openSUSE and Arch Linux 锛堟洿澶氫俊鎭弬瑙佷笅鏂囷級锛屽鏋滀綘杩樹娇鐢ㄥ埆鐨勫彂琛岀増鏈紝璇疯鎴戜滑鐭ラ亾鎴戜滑浼氬敖閲忚瀹冨彲浠ュ伐浣溿€�

.. toctree::
   linux-fedora.rst
   linux-opensuse.rst
   linux-arch.rst


閫氳繃鍛戒护琛岃繘琛岀敓鎴�
================================================================================

褰撲綘瀹屾垚浜嗕笂闈㈡墍鍒楀嚭鐨勪緷璧栭」鐨勫畨瑁咃紝灏卞彲浠ヤ娇鐢ㄤ笅闈㈢殑鍛戒护杩涜浜嗙紪璇戜簡锛�

.. code:: bash

    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浣嶇郴缁熷彲鐢ㄧ殑澶栭儴渚濊禆椤癸紝鏈€澶х殑闇€姹傚彲鑳芥潵鑷簬鍍忔爲鑾撴淳杩欐牱鐨勫崟鏉跨數鑴戙€�

浣犻渶瑕侀噾搴窲IT鍜岄噸閲忕骇鐨勪緷璧栭」LLVM锛孍VMJIT鍙敮鎸亁86_64鏋舵瀯锛岃繖鏍锋墠鑳借cpp-ethereum鍦�32浣嶅钩鍙颁笂杩愯銆傛兂瑕佺鐢↗IT锛屼綘闇€瑕佸湪Makefile闃舵浣跨敤涓嬮潰鐨勫懡浠�

.. code:: bash

    cmake .. -DEVMJIT=Off