Rose compiler Framework installation

本文档记录了在GitHub上获取并安装Rose Compiler Framework的过程,包括解决在Mac上配置时遇到的问题,如修改配置脚本以适应不同操作系统版本、安装Java、gfortran、Boost等依赖,以及处理配置脚本中的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1, 关于下载资源

之前一直在rose compiler官网上下载,但是那份程序2013年之后就停止更新了,而且近几天突然官网上不去了。

在立博师兄的指点下,知道在github上下载,rose后续的项目更新都在gitHub上,我使用的是:

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


据立博师兄说,rose项目bug很多,目前这个最新版本的也有。不过bug主要是在对c++工程项目的分析上,主要是template。

如果只针对C程序,做些stencil计算的处理,问题不大。


2,configure

1)安装过程和Rose installation guide(July 8, 2013)类似,不过第一步需要运行build脚本生成configure文件。

在Linux下(RHEL6.3),可以直接运行build脚本。但是我希望能在我的macbook air上运行,我使用的是macport安装各种依赖库,路径有些问题。

build第278行,alcohol的头文件路径需要修改成-I /opt/local/share/aclocal,这样在mac下就可以成功运行build脚本。


2)configure过程中,遇到说不识别当前的apple操作系统。这是因为我目前使用的是10.10,而configure脚本中最大支持到darwin11*,即10.7。

所以在configure脚本第8006行添加:

darwin14*)

OS_release=10.10


3)找不到java

 8381       # George Vulov (Aug. 25, 2010) On OS X the binaries found under /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/

 8382       # aren't the true Java binaries; instead they check the java preferences app and then instantiate whatever version of Java

 8383       # is specified there. The actual java binaries are located in /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

目前我还不大懂这段话是不是和具体mac os版本有关,但是10.10中我的确发现Versions/Current/Command下面有相应地二进制文件,而没有CurrentJDK文件夹。需要进行相应改动。

linux机器的路径没错。

8467行 JAVA_BIN=${JAVA_PATH}/bin去掉/bin,那是linux下的命名方式


3)找不到gfortran

自带的gcc(随xcode安装)里面不带gfortran,通过macport安装gcc-4.9,遇到以下问题:

checking whether your GCC version is supported by ROSE (4.0.x - 4.4.x)... configure: error: in `/Users/xsz/Documents/GPU/rose-0.9.6a/install_tree':

configure: error: your GCC 4.9.1 version is currently NOT supported by ROSE. GCC 4.0.x to 4.4.x is supported now.



4)boost版本不对

configure: error: Unsupported version of Boost: '105600'. Only 1.45 to 1.47 is currently supported.

去官网下载1.47,编译安装


5)configure 中途的ln问题

 408 Generating  /Users/xsz/Documents/GPU/rose-0.9.6a/install_tree/include-staging/gcc_HEADERS/rose_edg_required_macros_and_functions.h

 409 processing header file directory /opt/local/include to be mapped to /Users/xsz/Documents/GPU/rose-0.9.6a/install_tree/include-staging/gcc_HEADERS/hdrs1

 410 /opt/local/include needs       15 change(s)

 411 /opt/local/include /Users/xsz/Documents/GPU/rose-0.9.6a/install_tree/include-staging/gcc_HEADERS/hdrs1 needs to be copied and modified

 412 ln: illegal option -- -

 413 usage: ln [-Ffhinsv] source_file [target_file]

 414        ln [-Ffhinsv] source_file ... target_dir

 415        link source_file target_file

mac默认的bash不支持ln 命令不支持--force参数,需要用-f替代

修改config/create_system_headers第67行,

 67     find "$src_dir/." -type f -a -print | sed -n "s|^${src_dir}\\(.*\\)\$|ln -s --force '&' '$target_dir/\\1'|p" | sh -s

--force变成-f参数


6) 找不到termio.h

../../../edg4x-rose/src/util/sawyer/CommandLine.C:26:20: error: termio.h: No such file or directory

修改为termios.h


7)最后到了wget edg binary出错,这几天rosecompiler.org一直登不了,不过后续应该问题不大,毕竟我还是成功在RHEL 6.3上装过rose-0.9.5a的

幸好我的linux服务器上装过一个rose版本,否则现在无rose可用了。。。


最近一直和女朋友吵架,装个rose还装了一天,真郁闷。。

编译原理实验三 一、讨论Oberon-0 语言的特点 1、保留字与关键字的概念区分 保留字只要是用在程序语言的层次架构用途上,比如说IF,THEN,ELSIF,用在程序 的循环、分支、判断条件、程序块等组织上,它是程序语言中预定义的,具某些特殊意 义规范的单词。保留字侧重于强调不能被用户作为定义的名字。 关键字是一个只被用在某一部分的程序编程中,关键字在程序语言中同样有特殊的 意义特征。多用于类型定义,如在Oberon中,integer 便是用来定义变量类型的关键 字。还有其他的功能如作为程序语言中的某个特定函数的名称,如 write,read等(在 Oberon中). 不同的语言的关键字和保留字的概念区分是不一样的。例如在C,JAVA中, if,else, while 这些都是关键字的范围,而在Oberon 中是保留字的范围。在C 语言风格的程 序语言中,是将程序控制块的那些保留字也一并归为关键字的。(这些关键字不可以作 为变量,函数的名称,也就是不可以作为程序员使用的标示符)。 2、Oberon与C、Java的差别 a) 在每一一个主要的函数过程procedure 中,Oberon有begin 和end 来标志,而 在C 和java中一般是用花括号来标志。 b) 在定义变量时,Oberon 是在分号之后,也就是最后在给出具体是什么类型的,而 在C、Java中一般是在变量的前面就给出了类型,只是 Oberon会先用var说明 这是一个变量。 c) Oberon中的可用到数据结构主要有数组,类似C 中的结构体,类型选择比较少。 3 二、文法二义性讨论 该文法没有二义性。在其他的语言中出现的二义性类型中,比如表达式的parsing tree (存在两颗或以上的parsing trees)的二义性,需要用算符优先关系来确定的和if-else 的 匹配问题导致的二义性问题,都在该文法中的EBNF定义中被消除掉了。 1、对于表达式的二义性处理: simple_expression = ["+" | "-"] term {("+" | "-" | "OR") term} ; term = factor {("*" | "DIV" | "MOD" | "&") factor} ; 从中,可以看出*和 DIV、MOD 这些一定在+-之前就进行运算了。通过将表达式的将 +-和*DIV、MOD 等用不同层次的表达式进行定义,消除了这一二义性。 2、对于if-else匹配出现二义性的处理:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值