跳轉到內容

ROSE 編譯器框架/獲取 ROSE

來自華夏公益教科書,開放的世界,開放的書籍


Git 倉庫

[編輯 | 編輯原始碼]

ROSE 的原始檔由 git 管理,git 是一個分散式版本控制和原始碼管理系統。

rose 的最新開發版本。它可能無法透過所有迴歸測試。(建議使用)

透過所有迴歸測試的 ROSE 的釋出版本。

以下是一些粗略的說明,可幫助您開始在 Linux 機器上構建和安裝 ROSE

1. 安裝 Boost C++ 庫。您可以使用我的快速且髒的指令碼:install-boost.sh.

2. 配置您的環境

3. 執行 $ROSE/build 指令碼以執行 Autotools 引導

4. 執行 $ROSE/configure 指令碼,使用 "--with-boost=/path/to/boost"、"--prefix=/path/for/installation"。可選地,如果您想使用 ROSE 的 OpenMP 支援並與 GCC 4.4 的 OpenMP 執行時庫連結,則應配置 --with-gomp_omp_runtime_library=/usr/apps/gcc/4.4.1/lib64/。

5. 執行 "make –j24 install-core" 以構建和安裝 ROSE

請注意,我們目前僅支援 ROSE-EDG4 儲存庫中的 GCC 4.2.4 和 GCC 4.4.5。完整文件可在我們的網站上找到,http://rosecompiler.org,儘管特定於 ROSE-EDG4 的說明通常缺乏。

自動配置配置

[編輯 | 編輯原始碼]

EDG4.7 前端預設啟用,您可以使用以下選項配置 ROSE

   $ $ROSE/configure --with-boost=/path/to/boost/installation --prefix=/path/for/rose/installation

示例環境

[編輯 | 編輯原始碼]
   # Example setup.sh file to source relevant environment settings for building ROSE
   #
   # Update the paths to fit your environment…
   export BOOST_ROOT=/home/too1/local/opt/boost/1_45_0
   export BOOST_HOME="${BOOST_ROOT}"
   export JAVA_HOME=/home/too1/local/workspace/rose/edg3/keep_going/opt/java/jdk/1.7.0_15
   export LIBTOOL_HOME=/usr/apps/libtool/2.2.4
   export AUTOMAKE_HOME=/usr/apps/automake/1.9.6
   export LD_LIBRARY_PATH=":${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib/amd64/server:${BOOST_ROOT}/lib:"
   export PATH="${JAVA_HOME}/bin:${AUTOMAKE_HOME}/bin:${LIBTOOL_HOME}/bin:$PATH"
   export PATH="/usr/apps/git/latest/bin:$PATH"
   # GCC 4.4.1
   source /nfs/apps/mpfr/2.4.1/setup.sh
   source /nfs/apps/gmp/4.3.1/setup.sh
   source /nfs/apps/gcc/4.2.4/setup.sh

虛擬機器映像

[編輯 | 編輯原始碼]

首次安裝 ROSE 可能需要相當長的時間。提供了一個虛擬機器映像,其中包含已安裝 ROSE 的 Ubuntu 10.04 作業系統。

您可以使用 VMware Player 下載並播放它

更多資訊請訪問 ROSE 虛擬機器映像

適用於 github.com 的 git 1.7.10 或更高版本

[編輯 | 編輯原始碼]

https://help.github.com/articles/https-cloning-errors 中所述,github 需要 git 1.7.10 或更高版本才能避免 https 克隆錯誤。

Ubuntu 10.04 的軟體包儲存庫包含 git 1.7.0.4。因此,需要構建更高版本的 git。但您仍然需要舊版本的 git 來獲取最新版本的 git。

 apt-get install git-core

現在您可以克隆最新的 git

 git clone https://github.com/git/git.git

安裝從原始檔構建 git 所需的所有先決條件軟體包(假設您已經安裝了帶有 GCC 編譯器的 GNU 工具鏈、make 等)

 sudo apt-get install gettext zlib1g-dev asciidoc libcurl4-openssl-dev
 $ cd git  # enter the cloned git directory
 $ make configure ;# as yourself
 $ ./configure --prefix=/usr ;# as yourself
 $ make all doc ;# as yourself
 # make install install-doc install-html;# as root

EDG 原始碼

[編輯 | 編輯原始碼]

如果您有 EDG 許可證,我們可以為您提供 ROSE 的 EDG 原始碼。原始的官方 EDG 原始碼不適用於 ROSE,因為我們已經修改了 EDG 以更好地滿足我們的目的。

注意:我們為您提供我們的 Git 版本控制 ROSE-EDG 原始碼儲存庫的快照。這樣,您可以更輕鬆地將您的 EDG 修改貢獻回 ROSE。

1. 將您的 EDG(研究)許可證傳送給兩位 ROSE 工作人員,以防其中一位休假或出差。

2. 為 ROSE 工作人員提供一個 EDG 原始碼的放置位置(ssh 或 ftp 伺服器等)。

3. 收到 EDG 原始碼後,您有兩個選擇

作為子模組

[編輯 | 編輯原始碼]

a. 使用 ROSE-EDG 作為子模組(假設您有 ROSE 的 Git 源樹)

這是使用我們提供的 EDG git 倉庫的推薦方式。因此,假設您使用 ROSE 的本地 git 克隆($ROSE).

編輯子模組路徑$ROSE/.gitmodules指向您的 ROSE-EDG 儲存庫

[submodule "src/frontend/CxxFrontend/EDG"]
       path = src/frontend/CxxFrontend/EDG
-       url = ../ROSE-EDG.git
+       url = <path/to/your/ROSE-EDG.git>
-[submodule "projects/vulnerabilitySeeding"]
-       path = projects/vulnerabilitySeeding
-       url = ../vulnerabilitySeeding.git

執行 git-submodule 命令

$ cd $ROSE
$ git submodule init
$ git submodule update

上面的命令將簽出 EDG 子模組的版本並將其儲存到 ROSE/src/frontend/CxxFrontend/EDG 中

作為直接插入

[編輯 | 編輯原始碼]

b. 作為直接插入

將 ROSE-EDG 壓縮包移動到 ROSE 源樹中的正確位置$ROSE/src/frontend/EDG

  $ tar xzvf ROSE-EDG-b12158aa2.tgz
  $ ls
  EDG  ROSE-EDG-b12158aa2.tgz
  $ mv EDG $ROSE/src/frontend/EDG

警告:此方法可能無法工作,因為 EDG 是 ROSE 的子模組,因此需要這兩個模組之間的版本同步。例如,最新版本的 ROSE 可能不使用最新版本的 ROSE 的 EDG。

剩餘步驟

[編輯 | 編輯原始碼]

4. 在 ROSE 中,執行$ROSE/buildROSE 源樹頂層的指令碼,即$ROSE. 此指令碼引導 Autotools,包括Makefile.ams 在 EDG 源樹中。

5. 配置和構建 ROSE:通常,在此過程中,ROSE 會嘗試為您下載 EDG 二進位制壓縮包,但由於您擁有原始碼,因此此步驟將被跳過。


EDG 壓縮包

[編輯 | 編輯原始碼]

如果您沒有訪問 EDG 原始碼的許可權,您將在 ROSE 構建過程中自動下載打包的 EDG 二進位制壓縮包。下載是在make$ROSE_BUILD/src/frontend/CxxFrontend.

EDG 二進位制版本是相對於您的 ROSE 版本的計算的二進位制相容性簽名。您可以透過執行$ROSE/scripts/bincompat-sig來檢查此版本,例如

$ ./scripts/bincompat-sig 
7b1930fafc929de85182ee1a14c86758

您可能會遇到此錯誤

$ ./scripts/bincompat-sig 
Unable to find a remote tracking a canonical repository.  Please add a
canonical repository as a remote and ensure it is up to date.  Currently
configured remotes are:

   origin => https://github.com/rose-compiler/rose

Potential canonical repositories include:

   anything ending with "rose.git" (case insensitive)

如果是這種情況,只需在您的原點 URL 路徑的末尾新增 ".git"。在我們的示例中,這將轉換為

https://github.com/rose-compiler/rose.git

二進位制檔案列表

[編輯 | 編輯原始碼]

在此處檢視可用的 EDG 二進位制檔案列表:http://www.rosecompiler.org/edg_binaries/edg_binaries.txt.

EDG 二進位制檔案是為以下平臺生成的(最後更新時間:2012 年 12 月 22 日)

平臺 EDG 3.3 EDG 4.0
amd64-linux GCC 3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.2, 4.4.1 GCC 3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.2, 4.4.1
i686-linux GCC 3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.2, 4.4.1 GCC 3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.2, 4.4.1
32位-macos-10.5 GCC 4.0.4
64位-macos-10.6 GCC 4.2.4
64位-x86_64-macos-10.6 GCC 4.2.4
34位-debian GCC 3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.2, 4.4.1 GCC 3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.2, 4.4.1
華夏公益教科書