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.docker.net.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