浏览 12115 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-30
最后修改:2010-05-30
一些废话: 最近装了Ubuntu 10.04,当时图方便就用apt装了Ruby和Rails,觉得也还蛮方便的。今天装metric_fu这个gem时提示我rubygems的版本不够新,然后想升级时发现"gem update --system"不能用,apt提示我只能去找Debian的包……最后还是觉定重新编译安装Ruby,以后再也不偷懒了。
下载了Ruby 1.8.7,执行make命令时,发生了一个奇怪的错误:
math.c:37:13: error: missing binary operator before token "(" ...
遍寻google不得,都是只有提问没回答的……最后在一个似乎是聊天室记录的网页里发现有人说是elif的语法错误。抱着试一试的心情看了看Ruby源代码目录下的math.c,定位到37行,发现以下语句:
#elif define(ERANGE)
我这个不懂鸟语的当然看不懂这哪里有语法错误,不过还好上面几行还有一行相似的代码:
#if defined(ERANGE)
这句是没报错的,区别就在于elif那句define的后面少了一个 d ,试着把define改成defined,再次make,一切顺利! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-05-30
最后修改:2010-05-30
你要把原来的ruby和rails都删掉才行的。
whereis ruby && whereis rails 然后把相应目录下的都删掉。 然后再装。我记得以前曾经也出过类似的错误,编译通不过,就是这么解决的,没有改过源文件。 |
|
返回顶楼 | |
发表时间:2010-05-31
我也试过全删掉,但还是报一样的错误,Google上有两种解决办法,好像都没人证实……一是说gcc 4.4太新了,要换旧点的gcc 4.3编译;另一种就是说math.c的代码有问题。
gcc那玩意依赖太多了,我不想搞出新的问题来,就试着看了看源码,结果网上那人说的一样…… |
|
返回顶楼 | |
发表时间:2010-06-01
奇怪啊 我用刚更新的gcc 4.4.3跑了一遍 很顺利就下来了…… LZ如果对配置不熟 可以试一下用RVM 全程自动……
|
|
返回顶楼 | |
发表时间:2010-06-06
最后修改:2010-06-06
今天在台式机上又装了一遍Ruby,同样是Ubuntu 10.04,我在此处下的Ruby源码:
ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz 这是我以前安装Ruby on Rails环境时记下的源码下载地址。准备以后重装时用的。 编译出现了一样的问题,报math.o文件的语法错误,不过这次我手边还有一份从github上下的最新的Ruby源码。就对比了一下两者的math.o文件,发现确实是语法错误。对比如下: github上的Ruby源码中的math.o文件: #if defined(EDOM) errno = EDOM; #elif defined(ERANGE) errno = ERANGE; #endif 我用ftp下的Ruby源码中的math.o文件: #if defined(EDOM) errno = EDOM; #elif define(ERANGE) errno = ERANGE; #endif 可以看到elif那一段的define确实有问题,虽然我不懂C…… |
|
返回顶楼 | |
发表时间:2010-06-06
建议使用RVM模式安装,保留原有系统中的ruby。这样你就不会浪费注意力在ruby的编译上了。
|
|
返回顶楼 | |