# Build Instructions (Linux)
遵循下面的引導,在 Linux 上構建 Electron .
## Prerequisites
* Python 2.7.x. 一些發行版如 CentOS 仍然使用 Python 2.6.x ,所以或許需要 check 你的 Python 版本,使用 `python -V`.
* Node.js v0.12.x. 有很多方法來安裝 Node. 可以從 [Node.js](http://nodejs.org)下載原文件并且編譯它 .也可以作為一個標準的用戶在 home 目錄下安裝 node .或者嘗試使用倉庫 [NodeSource](https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories).
* Clang 3.4 或更新的版本.
* GTK+開發頭文件和libnotify.
在 Ubuntu, 安裝下面的庫 :
```bash
$ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \
libnotify-dev libgnome-keyring-dev libgconf2-dev \
libasound2-dev libcap-dev libcups2-dev libxtst-dev \
libxss1 libnss3-dev gcc-multilib g++-multilib
```
在 Fedora, 安裝下面的庫 :
```bash
$ sudo yum install clang dbus-devel gtk2-devel libnotify-devel libgnome-keyring-devel \
xorg-x11-server-utils libcap-devel cups-devel libXtst-devel \
alsa-lib-devel libXrandr-devel GConf2-devel nss-devel
```
其它版本的也許提供了相似的包來安裝,通過包管理器,例如 pacman.
或一個可以編譯源文件的.
## 使用虛擬機
如果在虛擬機上構建 Electron,你需要一個固定大小的設備,至少需要 25 gigabytes .
## 獲取代碼
```bash
$ git clone https://github.com/electron/electron.git
```
## Bootstrapping
bootstrap 腳本也是必要下載的構建依賴,來創建項目文件.需要使用 Python 2.7.x 來讓腳本成功執行.正確下載文件會花費較長的時間.
注意我們使用的是 `ninja` 來構建 Electron,所以沒有生成 `Makefile` 項目.
```bash
$ cd electron
$ ./script/bootstrap.py -v
```
### 交叉編譯
如果想創建一個 `arm` target ,應當還要下載下面的依賴 :
```bash
$ sudo apt-get install libc6-dev-armhf-cross linux-libc-dev-armhf-cross \
g++-arm-linux-gnueabihf
```
為了編譯 `arm` 或 `ia32` targets, 你應當為 `bootstrap.py` 腳本使用
`--target_arch` 參數:
```bash
$ ./script/bootstrap.py -v --target_arch=arm
```
## 構建
創建 `Release` 、 `Debug` target:
```bash
$ ./script/build.py
```
這個腳本也許會在目錄 `out/R` 下創建一個巨大的可執行的 Electron . 文件大小或許會超過 1.3 gigabytes. 原因是 Release target 二進制文件包含了 調試符號 .運行 `create-dist.py` 腳本來減小文件的 size :
```bash
$ ./script/create-dist.py
```
這會在 `dist` 目錄下創建一個有大量小文件的工作空間. 運行 create-dist.py 腳本之后, 或許你想刪除仍然在 `out/R` 下的 1.3+ gigabyte 二進制文件.
可以只創建 `Debug` target:
```bash
$ ./script/build.py -c D
```
創建完畢, 可以在 `out/D`下面找到 `electron`.
## Cleaning
刪除構建文件 :
```bash
$ ./script/clean.py
```
## 解決問題
確保你已經安裝了所有的依賴 .
### Error While Loading Shared Libraries: libtinfo.so.5
預構建的 `clang` 會嘗試鏈接到 `libtinfo.so.5`. 取決于 host 架構, 適當的使用 `libncurses`:
```bash
$ sudo ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5
```
## Tests
測試你的修改是否符合項目代碼風格,使用:
```bash
$ ./script/cpplint.py
```
測試有效性使用:
```bash
$ ./script/test.py
```
- 介紹
- 常見問題
- Electron 常見問題
- 向導
- 支持平臺
- 分發應用
- 提交應用到 Mac App Store
- 打包應用
- 使用 Node 原生模塊
- 主進程調試
- 使用 Selenium 和 WebDriver
- 使用開發人員工具擴展
- 使用 Pepper Flash 插件
- 使用 Widevine CDM 插件
- 教程
- 快速入門
- 桌面環境集成
- 在線/離線事件探測
- API文檔
- 簡介
- 進程對象
- 支持的 Chrome 命令行開關
- 環境變量
- 自定義的 DOM 元素
- File 對象
- <webview> 標簽
- window.open 函數
- 在主進程內可用的模塊
- app
- autoUpdater
- BrowserWindow
- contentTracing
- dialog
- globalShortcut
- ipcMain
- Menu
- MenuItem
- powerMonitor
- powerSaveBlocker
- protocol
- session
- webContents
- Tray
- 在渲染進程(網頁)內可用的模塊
- desktopCapturer
- ipcRenderer
- remote
- webFrame
- 在兩種進程中都可用的模塊
- clipboard
- crashReporter
- nativeImage
- screen
- shell
- 開發
- 代碼規范
- 源碼目錄結構
- 與 NW.js(原 node-webkit)在技術上的差異
- 構建系統概覽
- 構建步驟(OS X)
- 構建步驟(Windows)
- 構建步驟(Linux)
- 在調試中使用 Symbol Server