ROSE 編譯器框架/獲取 ROSE
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 虛擬機器映像
如 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 許可證,我們可以為您提供 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 原始碼的許可權,您將在 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 |