ROSE 编译器框架/虚拟机镜像
本页面的目标是记录
- 用户如何下载虚拟机镜像(或虚拟设备)并开箱即用 ROSE。
- 我们不再发布 VM,而是发布 Docker 镜像。
我们目前有三个虚拟机镜像
- V4:我们不再提供适用于 Ubuntu 18.04 的 VM,因为安装过程非常简单。请遵循以下几行命令。
- V3:最新的 VM 使用 Ubuntu 16.04(Xenial Xerus),安装了 ROSE,并使用 EDG 4.12 前端
- V2:使用 Ubuntu 14.04(Trusty Tahr)和基于 EDG 4.x 前端的 ROSE 的 VM(不再维护)
- V1:使用 Ubuntu 10.04(Lucid Lynx)和基于 EDG 3.x 前端的 ROSE 的非常旧的 VM(不再维护)
在构建之前,您应该克隆此存储库并在您的计算机上安装 Docker。
Docker 安装说明
sudo apt update
sudo apt upgrade
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce
# check if docker service is started
sudo systemctl status docker
您可以使用 Docker 创建和提供对 rose 参数的微调。您可以在以下链接中找到一个描述如何执行此操作的 GitHub 项目。
https://github.com/chunhualiao/rose-docker-image
使用 rose 和 docker 的最简单方法是下载一个可直接使用的镜像(由 Gleison 构建)。您可以使用以下命令轻松访问镜像
sudo docker pull gleisonsdm/rose:latest
下载镜像后,您可以将 rose 作为 Docker 上的微服务运行。使用该镜像的最简单方法是直接运行 bash 命令。您可以在我们的 Docker 镜像的 "/usr/rose/bin/" 中找到可执行的二进制文件。请使用以下命令行进行检查
sudo docker run --rm -it -v $(pwd):/root gleisonsdm/rose:latest ls /usr/rose/bin
然后,预期的输出是
ArrayProcessor interproceduralCFG DataFaultToleranceTransformation libtool KeepGoingTranslator livenessAnalysis astCopyReplTest loopProcessor astRewriteExample1 mangledNameDumper autoPar measureTool autoTuning moveDeclarationToInnermostScope buildCallGraph outline codeInstrumentor pdfGenerator compassEmptyMain preprocessingInfoDumper compassMain qualifiedNameDumper compassVerifier rajaChecker defaultTranslator rose-config defuseAnalysis roseupcc dotGenerator sampleCompassSubset dotGeneratorWholeASTGraph summarizeSignatures extractMPISkeleton typeforge generateSignatures virtualCFG identityTranslator
下一步是检查您的 Docker 镜像是否正常工作,您可以将 identityTranslator 作为测试运行在一个程序中。我们建议您运行一个 hello world,如下面的代码所示
#include <iostream>
int main() {
std::cout << "Hello World!\n";
return 0;
}
将此代码保存到名为 "main.cpp" 的文件中后,您可以直接运行 ROSE 实用程序,但不要忘记将本地路径[挂载](https://docs.dockerd.com.cn/storage/volumes/)到容器中。例如,以下命令运行带有 ROSE 的容器,将当前工作目录挂载到容器的 /root 中,并在 main.cpp 上执行 indetityTranslator 工具。生成的文件将存储在当前工作目录中,容器将由于 --rm 选项而被删除。
sudo docker run --rm -it -v $(pwd):/root gleisonsdm/rose identityTranslator -c main.cpp
最后,您的当前目录将包含以下列出的新文件
- main.o
- main.ti
- rose_main.cpp
我们不再提供适用于 Ubuntu 18.04 的 VM,因为安装过程非常简单。请在以下位置查看几行命令:ROSE_Compiler_Framework/Installation#Instructions_for_Ubuntu_18.04
下载虚拟机镜像
- http://www.rosecompiler.org/Ubuntu-ROSE-Demo-V3.tar.gz
- 警告:这是一个 4.4 GB 的大文件(如果完全解压缩,则为 20.2 GB)。根据您的高速互联网连接速度,下载可能需要大约 1 小时。
- 演示用户帐户(Ubuntu 中的 sudo 用户)
- 帐户:demo
- 密码:password
警告:由于 LLNL 对最大下载文件大小的限制,LLNL 用户可能无法下载它。在未经授权的情况下运行虚拟机也可能违反 LLNL 的安全策略。因此,此镜像不应在 LLNL 内部使用。
在 Windows 上,您可以安装 7-zip (http://www.7-zip.org/) 将 tar 包(.tar.gz 文件)解压缩到一个文件夹中。
- 在台式电脑上,它可能需要大约 20 分钟才能完成两步解压缩(.tar.gz 到 .tar,然后 .tar 到文件夹)。
- 最终文件夹的大小约为 20.2 GB。
demo@ubuntu:~$ cat readme
This is a Ubuntu 16.04 virtual machine with the ROSE Compiler installed. cloned rose-develop on 2/22/2017 version 0.9.7.188 Directory List ~/rose-develop : git clone https://github.com/rose-compiler/rose-develop ~/build-rose : build tree of rose ~/opt/rose_inst : installation path of rose ~/tests : a simple c file, processed by identityTranslator and dotGeneratorWholeASTGraph. type zgrviewer -f filename.dot to view a dot file of the AST graph gcc-4.9.3 is the default gcc ---------- using ROSE ---------- To use the rose translator, you need to first setup the environment. source ~/set.rose ---------- bashrc ---------- bash env in .bashrc has the following variables by default # add jdk to PATH and LD_LIBRARY_PATH PATH=/home/demo/opt/jvm/jdk1.7.0_51/bin:$PATH LD_LIBRARY_PATH=/home/demo/opt/jvm/jdk1.7.0_51/jre/lib/amd64/server:/home/demo/opt/jvm/jdk1.7.0_51/lib:$LD_LIBRARY_PATH # add boost to LD_LIBRARY_PATH LD_LIBRARY_PATH=/home/demo/opt/boost/1.61.0/gcc-4.9.3-default/lib:$LD_LIBRARY_PATH # create alias for zgrviewer alias zgrviewer='/home/demo/opt/zgrviewer-0.10.0/run.sh' export PATH LD_LIBRARY_PATH ---------- configuration of ROSE ---------- CC=/usr/bin/gcc-4.9 CXX=g++-4.9 FC=/usr/bin/gfortran-4.9 CXXFLAGS='-g -rdynamic -Wall -Wno-unused-local-typedefs -Wno-attributes' /home/demo/rose-develop/configure --enable-assertion-behavior=abort --prefix=/home/demo/opt/rose_inst --with-CFLAGS=-fPIC --with-CXXFLAGS=-fPIC --with-C_OPTIMIZE=-O0 --with-CXX_OPTIMIZE=-O0 --with-C_DEBUG='-g -rdynamic' --with-CXX_DEBUG='-g -rdynamic' --with-C_WARNINGS='-Wall -Wno-unused-local-typedefs -Wno-attributes' --with-CXX_WARNINGS='-Wall -Wno-unused-local-typedefs -Wno-attributes' --with-ROSE_LONG_MAKE_CHECK_RULE=yes --with-boost=/home/demo/opt/boost/1.61.0/gcc-4.9.3-default --with-gfortran='/usr/bin/gfortran-4.9' --with-python='/usr/bin/python3' --with-java=/home/demo/opt/jvm/jdk1.7.0_51/bin/javac --enable-languages=all --enable-projects-directory --with-doxygen --without-sqlite3 --without-libreadline --without-magic --with-yaml='/home/demo/opt/yaml/0.5.3/boost-1.61.0/gcc-4.9.3-default' --with-dlib='/home/demo/opt/dlib/18.18' --without-wt --without-yices --without-pch --enable-rosehpct --with-gomp_omp_runtime_library=/usr/lib/gcc/x86_64-linux-gnu/4.9/ --without-haskell --enable-edg_version=4.12 make core make install-core
安装过程遵循来自http://rosecompiler.org/ROSE_HTML_Reference/installation.html 的说明,但将 gcc 版本更改为 4.9.3。
如果您想重复此过程,则提供了一个脚本:https://github.com/rose-compiler/rose-develop/blob/master/scripts/2017-03-ROSE-Unbuntu-16.04-VM-setup.sh
demo@ubuntu:~$ cat installation_notes
ubuntu 64-bit 16.04.1 amd64
name: Ubuntu-ROSE-Demo-V3
username: demo
password: password
Virtual machine name: Ubuntu-ROSE-Demo-V3
hard disk: 30 GB, split
memory 4096 MB
processors 2
cloned rose-develop on 2/22/2017
version 0.9.7.188
installed with:
gcc 4.9.3
Boost 1.61.0
EDG 4.12
-------------------- INSTALLATION PROCEDURES --------------------
>$ sudo apt-get update
>$ sudo apt-get upgrade
>$ sudo apt-get install git wget build-essential libtool automake flex bison python3-dev unzip perl-doc
---------- change gcc to 4.9.3 ----------
# gcc 4.9 or later must be used to support C++11 features
>$ sudo apt-get install gcc-4.9 g++-4.9 gfortran-4.9
>$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 100
>$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 100
>$ sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-4.9 100
check that gcc -v says version 4.9.3
---------- install jdk ----------
# download jdk-7u51-linux-x64.tar.gz (from http://ftp.upf.br/pub/linux/java/jdk-7u51-linux-x64.tar.gz or official oracle website )
>$ mkdir ~/opt/jvm
>$ cd ~/opt/jvm
>$ tar xvf ~/Downloads/jdk-7u51-linux-x64.tar.gz
# add to .bashrc
PATH=/home/demo/opt/jvm/jdk1.7.0_51/bin:$PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/demo/opt/jvm/jdk1.7.0_51/jre/lib/amd64/server:/home/demo/opt/jvm/jdk1.7.0_51/lib
export PATH LD_LIBRARY_PATH
source ~/.bashrc
check that javac -version says javac 1.7.0_51
---------- installing Boost ----------
# We highly recommend to install boost into its own path, instead of into system wide path.
# The system default installation has a different directory layout than our build system expects ($BOOST_ROOT/include/boost and $BOOST_ROOT/lib/).
# If you still want to use the system wide installation of boost, you have to separately specify where to find headers and libraries,
# for example: --with-boost=/usr --with-boost-libdir=/usr/lib/x86_64-linux-gnu
# download boost from
# https://sourceforge.net/projects/boost/files/boost/1.61.0/
>$ cd ~/Downloads
>$ wget -O boost-1.61.0.tar.bz2 http://sourceforge.net/projects/boost/files/boost/1.61.0/boost_1_61_0.tar.bz2/download
>$ tar xf boost-1.61.0.tar.bz2
>$ cd boost_1_61_0
>$ ./bootstrap.sh --prefix=/home/demo/opt/boost/1.61.0/gcc-4.9.3-default --with-libraries=chrono,date_time,filesystem,iostreams,program_options,random,regex,serialization,signals,system,thread,wave
>$ ./b2 -sNO_BZIP2=1 install
# add to .bashrc
export LD_LIBRARY_PATH=/home/demo/opt/boost/1.61.0/gcc-4.9.3-default/lib:$LD_LIBRARY_PATH
---------- install zgrviewer ----------
Download and untar the ZGRViewer distribution.
wget -O zgrviewer-0.10.0.zip https://sourceforge.net/projects/zvtm/files/zgrviewer/0.10.0/zgrviewer-0.10.0.zip/download
>$ cd ~/opt/
>$ unzip ~/Downloads/zgrviewer-0.10.0.zip
Edit it's "run.sh" script so that the ZGRV_HOME variable has the correct value. The scripts/zgrviewerExampleScript has some additional java switches that are useful.
ZGRV_HOME=/home/demo/opt/zgrviewer-0.10.0
Edit ~/.bashrc and add an alias that allows you to run ZGRViewer by typing "zgrviewer":
alias zgrviewer='/home/demo/opt/zgrviewer-0.10.0/run.sh'
>$ sudo apt-get install graphviz
Run zgrviewer and edit the preferences to point to graphviz bins
---------------------------
# doxygen
>$ sudo apt-get install doxygen
---------------------------
# latex
>$ sudo apt-get install texlive
---------------------------
# needed to install yaml
>$ sudo apt-get install cmake
# yaml-cpp, for reading YAML or JSON configuration files and storing results.
# Yaml-cpp must be compiled against the same version of boost used
# download yaml-cpp-yaml-cpp-0.5.3.tar.gz from https://github.com/jbeder/yaml-cpp/releases
# Download source code to ~/Downloads/yaml-cpp-0.5.3.tar.gz
>$ BOOST_ROOT=/home/demo/opt/boost/1.61.0/gcc-4.9.3-default
>$ YAMLCPP_ROOT=/home/demo/opt/yaml/0.5.3/boost-1.61.0/gcc-4.9.3-default
>$ cd ~/Downloads
>$ tar xzvf yaml-cpp-yaml-cpp-0.5.3.tar.gz
>$ mkdir yaml-cpp-yaml-cpp-0.5.3/_build
>$ cd yaml-cpp-yaml-cpp-0.5.3/_build
>$ cmake .. -DBOOST_ROOT=$BOOST_ROOT -DCMAKE_INSTALL_PREFIX=$YAMLCPP_ROOT
>$ make install
---------------------------
# Dlib.
# --with-dlib='/home/demo/opt/dlib/18.18'
# Download tarball from http://dlib.net/
# or https://sourceforge.net/projects/dclib/files/dlib/v18.18/
# unpack into desired installation directory
>$ mkdir ~/opt/dlib
>$ cd ~/opt/dlib
>$ tar -xf ~/Downloads/dlib-18.18.tar.bz2
>$ mv dlib-18.18 18.18
---------------------------
# For various analysis algorithms that use cryptographic functions
>$ sudo apt-get install libssl-dev libgcrypt11-dev
---------------------------
# For parsing XML files in certain tools such as roseHPCT and BinaryContextLookup.
>$ sudo apt-get install libxml2-dev
---------------------------
>$ sudo apt-get install libdwarf-dev
---------- bashrc ----------
.bashrc should have
# add jdk to PATH and LD_LIBRARY_PATH
PATH=/home/demo/opt/jvm/jdk1.7.0_51/bin:$PATH
LD_LIBRARY_PATH=/home/demo/opt/jvm/jdk1.7.0_51/jre/lib/amd64/server:/home/demo/opt/jvm/jdk1.7.0_51/lib:$LD_LIBRARY_PATH
# add boost to LD_LIBRARY_PATH
LD_LIBRARY_PATH=/home/demo/opt/boost/1.61.0/gcc-4.9.3-default/lib:$LD_LIBRARY_PATH
# create alias for zgrviewer
alias zgrviewer='/home/demo/opt/zgrviewer-0.10.0/run.sh'
export PATH LD_LIBRARY_PATH
---------- install rose ----------
>$ cd ~/
>$ git clone https://github.com/rose-compiler/rose-develop
>$ cd rose-develop
>$ ./build
>$ cd ..
>$ mkdir build-rose
>$ cd build-rose
>$ CC=/usr/bin/gcc-4.9 CXX=g++-4.9 FC=/usr/bin/gfortran-4.9 CXXFLAGS='-g -rdynamic -Wall -Wno-unused-local-typedefs -Wno-attributes' /home/demo/rose-develop/configure --enable-assertion-behavior=abort --prefix=/home/demo/opt/rose_inst --with-CFLAGS=-fPIC --with-CXXFLAGS=-fPIC --with-C_OPTIMIZE=-O0 --with-CXX_OPTIMIZE=-O0 --with-C_DEBUG='-g -rdynamic' --with-CXX_DEBUG='-g -rdynamic' --with-C_WARNINGS='-Wall -Wno-unused-local-typedefs -Wno-attributes' --with-CXX_WARNINGS='-Wall -Wno-unused-local-typedefs -Wno-attributes' --with-ROSE_LONG_MAKE_CHECK_RULE=yes --with-boost=/home/demo/opt/boost/1.61.0/gcc-4.9.3-default --with-gfortran='/usr/bin/gfortran-4.9' --with-python='/usr/bin/python3' --with-java=/home/demo/opt/jvm/jdk1.7.0_51/bin/javac --enable-languages=all --enable-projects-directory --with-doxygen --without-sqlite3 --without-libreadline --without-magic --with-yaml='/home/demo/opt/yaml/0.5.3/boost-1.61.0/gcc-4.9.3-default' --with-dlib='/home/demo/opt/dlib/18.18' --without-wt --without-yices --without-pch --enable-rosehpct --with-gomp_omp_runtime_library=/usr/lib/gcc/x86_64-linux-gnu/4.9/ --without-haskell --enable-edg_version=4.12
>$ make core
>$ make install-core
---------- set.rose ----------
# create a file to set the rose environment
>$ cd ~/
>$ cat > set.rose
ROSE_INS=/home/demo/opt/rose_inst
PATH=$PATH:$ROSE_INS/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ROSE_INS/lib
# Don't forget to export variables !!!
export PATH LD_LIBRARY_PATH
------- using ROSE ----------
>$ source set.rose.edg
>$ mkdir tests/
>$ cd tests/
>$ cat > sample.c
void foo()
{
int a = 0;
a += 1;
return a;
}
>$ identityTranslator -c sample.c
>$ dotGenerator -c sample.c
下载使用 VMware Player 创建的虚拟机镜像
- http://www.rosecompiler.org/Ubuntu-ROSE-Demo-V2.tar.gz
- 警告:这是一个 6.7 GB 的大文件(完全解压缩后为 18.2 GB)。根据您的高速互联网连接速度,下载可能需要约 1 小时。
- 演示用户帐户(Ubuntu 中的 sudo 用户)
- 帐户:demo
- 密码:password
警告:由于 LLNL 对最大下载文件大小的限制,LLNL 用户可能无法下载它。在未经授权的情况下运行虚拟机也可能违反 LLNL 的安全策略。因此,此镜像不应在 LLNL 内部使用。
在 Windows 上,您可以安装 7-zip (http://www.7-zip.org/) 将 tar 包(.tar.gz 文件)解压缩到一个文件夹中。
- 在台式电脑上,它可能需要大约 20 分钟才能完成两步解压缩(.tar.gz 到 .tar,然后 .tar 到文件夹)。
- 最终文件夹大小约为 18.2 GB
demo@ubuntu:~$ cat readme
This is a Ubuntu 14.04 virtual machine with installed ROSE-edg4.x. Directory List * ~/rose-edg4x.git : github.com rose edg4.x-based, checked out on Jan 24, 2015 * ~/buildtree : build tree of rose, using the following configure command: ../rose-edg4x.git/configure --prefix=/home/demo/opt/rose_inst --with-boost=/home/demo/opt/boost_1.45.0_inst --with-C_OPTIMIZE=-O0 --with-CXX_OPTIMIZE=-O0 --with-gomp_omp_runtime_library=/usr/lib/gcc/x86_64-linux-gnu/4.8/ * ~/opt/rose_inst : installation path of rose (--prefix value) * ~/rose-project-template.git: project templates using the installed rose as a library. *~/tests: a simple c file, processed by identityTranslator and dotGeneratorWholeASTGraph. type run.sh filex.dot to view a dot file of AST graph bash env in .bashrc has the following variables by default ---------------------- export PATH=$PATH:/home/demo/opt/jdk1.8.0_25/bin:/home/demo/opt/zgrviewer-0.8.2 export LD_LIBRARY_PATH=/home/demo/opt/boost_1.45.0_inst/lib:/home/demo/opt/jdk1.8.0_25/jre/lib/amd64/server:$LD_LIBRARY_PATH export JAVA_HOME=/home/demo/opt/jdk1.8.0_25/ To use rose translator , you need to type source ~/set.rose
在撰写本文时,ROSE 不正式支持 Ubuntu 14.04 及其默认的 gcc 4.8,主要原因是 boost 和其他移植性问题。幸运的是,发布过程会生成 gcc 4.8 EDG 二进制文件。
在 Ubuntu 14.04 上成功编译 ROSE 使用了一些调整方法。
准备 ROSE 安装的先决条件
- sudo apt-get install gcc g++ gfortran
- sudo apt-get install libtool flex bison automake
- sudo apt-get install zlibc zlib1g zlib1g-dev libbz2-dev // 主要用于 boost iostreams 库
系统头文件路径的 Hack 1
- sudo ln -s /usr/include/x86_64-linux-gnu/sys /usr/include/sys
- 这是一个 Hack,因为 rose 使用绝对路径来查找一些系统头文件。Ubuntu 14 的路径不同。应该有一个更好的修复方法。
Boost 1.45 需要进行修补才能与 gcc 4.8 协同工作,以便可以安装所需的线程库
- 有关详细信息,请参阅 ROSE Compiler Framework/boost
Boost 1.45 修补程序 1
错误:/home/demo/development/install/gcc-4.4.7/boost-1.45.0/include/boost/thread/xtime.hpp:23: 错误:在数字常量之前预期标识符
解决方法:在文件 boost/thread/xtime.hpp 中,解决方法适用于 THREAD 和 WAVE
只取消定义 C11 宏:(以下 3 行是新的,后面是文件中现有的有问题的枚举)
#ifdef TIME_UTC
#undef TIME_UTC
#endif
enum xtime_clock_types
{
TIME_UTC=1
};
Boost 1.45 修补程序 2:强制 boost 识别 gcc 4.7 及更高版本实际上支持线程。
针对 boost/config/stdlib/libstdcpp3.hpp 的修补程序
33 33 34 34 #ifdef __GLIBCXX__ // gcc 3.4 and greater: 35 35 # if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \ 36 || defined(_GLIBCXX__PTHREADS) 36 || defined(_GLIBCXX__PTHREADS) \ 37 || defined(_GLIBCXX_HAS_GTHREADS) 37 38 // 38 39 // If the std lib has thread support turned on, then turn it on in Boost 39 40 // as well. We do this because some gcc-3.4 std lib headers define _REENTANT
ROSE 的修补程序 3,提高 boost 文件系统允许的 gcc 版本
demo@ubuntu:~/rose-edg4x.git$ git diff
diff --git a/src/util/support/FileHelper.h b/src/util/support/FileHelper.h
index d2ca5b6..142e509 100644
--- a/src/util/support/FileHelper.h
+++ b/src/util/support/FileHelper.h
@@ -5,7 +5,8 @@
// Non-windows support should used boost filesystem 2 if using GNU version less than 4.7.
#ifndef _MSC_VER
// #if ((BACKEND_CXX_COMPILER_MAJOR_VERSION_NUMBER == 4) && (BACKEND_CXX_COMPILER_MINOR_VERSION_NUMBER < 7))
-#if (defined(BACKEND_CXX_IS_INTEL_COMPILER) || ((BACKEND_CXX_COMPILER_MAJOR_VERSION_NUMBER == 4) && (BACKEND_CXX_COMPILER_MINOR_VERSION_NUMBER < 7)))
+// Liao, 1/24/2015. Not sure why GCC version is checked when we are taling about boost filesystem version. bumped up to 9 so gcc 4.8 can be supported (<8 do
+#if (defined(BACKEND_CXX_IS_INTEL_COMPILER) || ((BACKEND_CXX_COMPILER_MAJOR_VERSION_NUMBER == 4) && (BACKEND_CXX_COMPILER_MINOR_VERSION_NUMBER < 9)))
#define BOOST_FILESYSTEM_VERSION 2
#endif
#else
@@ -56,8 +57,8 @@ public:
// DQ (3/8/2014): Adding use of BACKEND_CXX_IS_INTEL_COMPILER to support Intel compiler for backend use.
#ifndef _MSC_VER
-// #if (defined(_MSC_VER) || ((BACKEND_CXX_COMPILER_MAJOR_VERSION_NUMBER == 4) && (BACKEND_CXX_COMPILER_MINOR_VERSION_NUMBER < 7)))
-#if (defined(BACKEND_CXX_IS_INTEL_COMPILER) || ((BACKEND_CXX_COMPILER_MAJOR_VERSION_NUMBER == 4) && (BACKEND_CXX_COMPILER_MINOR_VERSION_NUMBER < 7)))
+// #if (defined(_MSC_VER) || ((BACKEND_CXX_COMPILER_MAJOR_VERSION_NUMBER == 4) && (BACKEND_CXX_COMPILER_MINOR_VERSION_NUMBER < 9)))
+#if (defined(BACKEND_CXX_IS_INTEL_COMPILER) || ((BACKEND_CXX_COMPILER_MAJOR_VERSION_NUMBER == 4) && (BACKEND_CXX_COMPILER_MINOR_VERSION_NUMBER < 9)))
// DQ (2/10/2014): I think this is the older BOOST_FILESYSTEM_VERSION 2 specific code.
static string getFileName(const string& aPath) {
path boostPath(aPath);
@@ -132,7 +133,7 @@ public:
#ifndef _MSC_VER
// DQ (3/8/2014): Adding use of BACKEND_CXX_IS_INTEL_COMPILER to support Intel compiler for backend use.
// #if ((BACKEND_CXX_COMPILER_MAJOR_VERSION_NUMBER == 4) && (BACKEND_CXX_COMPILER_MINOR_VERSION_NUMBER < 7))
-#if (defined(BACKEND_CXX_IS_INTEL_COMPILER) || ((BACKEND_CXX_COMPILER_MAJOR_VERSION_NUMBER == 4) && (BACKEND_CXX_COMPILER_MINOR_VERSION_NUMBER < 7)))
+#if (defined(BACKEND_CXX_IS_INTEL_COMPILER) || ((BACKEND_CXX_COMPILER_MAJOR_VERSION_NUMBER == 4) && (BACKEND_CXX_COMPILER_MINOR_VERSION_NUMBER < 9)))
// DQ (2/10/2014): I think this is the older BOOST_FILESYSTEM_VERSION 2 specific code.
relativePath += *toPathIterator; //The first path element comes without the leading path delimiter
#else
@@ -147,7 +148,7 @@ public:
while (toPathIterator != boostToPath.end()) {
#ifndef _MSC_VER
// #if (defined(_MSC_VER) || ((BACKEND_CXX_COMPILER_MAJOR_VERSION_NUMBER == 4) && (BACKEND_CXX_COMPILER_MINOR_VERSION_NUMBER < 7)))
-#if (defined(BACKEND_CXX_IS_INTEL_COMPILER) || ((BACKEND_CXX_COMPILER_MAJOR_VERSION_NUMBER == 4) && (BACKEND_CXX_COMPILER_MINOR_VERSION_NUMBER < 7)))
+#if (defined(BACKEND_CXX_IS_INTEL_COMPILER) || ((BACKEND_CXX_COMPILER_MAJOR_VERSION_NUMBER == 4) && (BACKEND_CXX_COMPILER_MINOR_VERSION_NUMBER < 9)))
// DQ (2/10/2014): I think this is the older BOOST_FILESYSTEM_VERSION 2 specific code.
relativePath += pathDelimiter + *toPathIterator;
#else
对于使用基于 EDG 3.x 的 ROSE 的旧 VM,请参阅 ROSE_Compiler_Framework/Virtual_Machine_Image_V1