`
t0uch
  • 浏览: 57901 次
  • 性别: Icon_minigender_1
  • 来自: 柳州
社区版块
存档分类
最新评论

Ruby在Leopard上的编译安装遇到的问题及解决办法

    博客分类:
  • RoR
阅读更多
不想使用leopard上的ruby,所以就自己编译安装了,下面是安装及使用中遇到的几个问题

由于我已经把leopard上的有关ruby的目录删掉了,所以无法运行ruby,当然,编译的前提是要有xcode

这里用的是ruby网站上最新的包ruby 1.8.7 p72

问题1:

下载包,然后按照教程编译:
./configure --enable-shared --enable-pthread CFLAGS=-D_XOPEN_SOURCE=1

然后make,发现错误:
compiling readline
gcc -I. -I../.. -I../../. -I../.././ext/readline -DHAVE_READLINE_READLINE_H ...
... -D_XOPEN_SOURCE=1  -fno-common -pipe -fno-common   -c readline.c
readline.c: In function ‘filename_completion_proc_call’:
readline.c:703: error: ‘filename_completion_function’ undeclared
     (first use in this function)
readline.c:703: error: (Each undeclared identifier is reported only once
readline.c:703: error: for each function it appears in.)
readline.c:703: warning: assignment makes pointer from integer without a cast
readline.c: In function ‘username_completion_proc_call’:
readline.c:730: error: ‘username_completion_function’ undeclared 
     (first use in this function)
readline.c:730: warning: assignment makes pointer from integer without a cast
{standard input}:358:non-relocatable subtraction expression, 
     "_mReadline" minus "L00000000007$pb"
{standard input}:358:symbol: "_mReadline" can't be undefined in a 
      subtraction expression
...
{standard input}:249:non-relocatable subtraction expression, "_completion_proc"
       minus "L00000000003$pb"
{standard input}:249:symbol: "_completion_proc" can't be undefined in a 
        subtraction expression
make[1]: *** [readline.o] Error 1
make: *** [all] Error 1

查找,得知需要先运行ruby src目录下的ext/extconf.rb,但是我之前已经把ruby给删掉了,所以无法运行这个文件 T_T
继续找,发现可以在configure后生成的config.h文件中加入宏定义来搞定这个问题
所以,直接编辑在ruby src目录下的config.h,在最末尾加入:
#define HAVE_RL_FILENAME_COMPLETION_FUNCTION 1
#define HAVE_RL_USERNAME_COMPLETION_FUNCTION 1
#define HAVE_RL_COMPLETION_MATCHES 1

这种错误,心里想肯定是因为某位帅哥点宏定义问题阿
加入后可以编译通过,屁颠屁颠装gem和rails去咯,想不到,这个解决方法还是有缺陷

问题2:
运行script/console出错,没这个咋个调试呢?不行!
一看,还是readline的问题,冤家路窄阿
错误:
Loading development environment (Rails 2.2.2)
/usr/local/lib/ruby/1.8/i686-darwin9.6.0/readline.bundle: dlopen(/usr/local/lib/ruby/1.8/i686-darwin9.6.0/readline.bundle, 9): Symbol not found: _rl_filename_completion_function (LoadError)
  Referenced from: /usr/local/lib/ruby/1.8/i686-darwin9.6.0/readline.bundle
  Expected in: flat namespace
 - /usr/local/lib/ruby/1.8/i686-darwin9.6.0/readline.bundle
	from /usr/local/lib/ruby/1.8/irb/completion.rb:10
	from /usr/local/lib/ruby/1.8/irb/init.rb:252:in `require'
	from /usr/local/lib/ruby/1.8/irb/init.rb:252:in `load_modules'
	from /usr/local/lib/ruby/1.8/irb/init.rb:250:in `each'
	from /usr/local/lib/ruby/1.8/irb/init.rb:250:in `load_modules'
	from /usr/local/lib/ruby/1.8/irb/init.rb:21:in `setup'
	from /usr/local/lib/ruby/1.8/irb.rb:54:in `start'
	from /usr/local/bin/irb:13

思考一下,应该是bundle里头压根就没有这个_rl_filename_completion_function,没搞过mac开发,这东西莫非和dll差不多吗?应该查不多 XD

所以,决定重新编译ruby,把刚刚改过东西的ruby src删除掉,重新configure,然后这次老老实实的运行一下ext/extconf.rb,然后make,这次果然没有错误了.make install后发现script/console还是有错误.
无果,直接硬来,nnd
sudo cp readline.bundle /usr/local/lib/ruby/1.8/i686-darwin9.6.0/
替换后后问题得到解决.

误打误撞把奇怪的问题搞定了,有不足的地方希望指正
分享到:
评论

相关推荐

    mac snow leopard安装ruby

    在 Mac OS X Snow Leopard(版本 10.6)系统下安装 Ruby 和进行 Ruby on Rails 的开发,是许多开发者特别是初学者可能会遇到的需求之一。尽管 Snow Leopard 已经是一个相对较老的操作系统版本,但仍然有不少用户由于...

    leopard硬盘安装助手v0.3

    这些内容可能帮助用户了解如何正确使用新的功能,避免在安装过程中遇到问题。此外,可能还会附带一些必要的驱动程序或补丁,以确保在不同硬件配置上的兼容性和稳定性。 总之,"leopard硬盘安装助手v0.3"的发布,...

    Leopard 10.6下安装TextMate1.5.9

    在安装前,了解可能存在的兼容性问题,并准备相应的解决方案。 8. **更新和维护**:安装老版本的软件意味着可能错过了一些新功能和安全性修复。理解这一点,并定期检查是否有更新或者替代方案。 9. **社区支持**:...

    leopard硬盘安装助手

    然而,对于一些用户来说,安装过程可能会遇到挑战,特别是那些希望在硬盘上全新安装或升级现有系统的用户。这就是“Leopard硬盘安装助手”发挥作用的地方。 Leopard硬盘安装助手是一款专为Mac用户设计的工具,旨在...

    Leopard硬盘安装助手

    Leopard硬盘安装助手~~~安装MAC OS~必备软件~

    leopard硬盘安装史重要更新 leopard硬盘安装助手v0.3

    新鲜出炉:leopard硬盘安装史重要更新:leopard硬盘安装助手!!支持iso文件! 1、格式化一盘为fat32,或将盘上所有文件(含隐藏的)删空 2、打开程序,选镜象文件(支持iso文件) 3、目标盘选刚才格的盘,点开始进行镜象 4、...

    教你在VMWare下安装MAC OS X Snow Leopard 10.6

    在VMWare中安装MAC OS X Snow Leopard 10.6是一种常见的在个人计算机上体验苹果操作系统的解决方案。这种方法避免了物理硬盘分区和刻录光盘的步骤,而是直接使用虚拟化软件和DMG镜像文件进行安装。以下是一个详细的...

    硬盘安装Leopard方法

    ### 硬盘安装Leopard方法详解 #### 一、前言 在计算机技术发展初期,用户想要体验不同操作系统往往需要通过光盘进行安装。随着技术的进步,硬盘安装成为了一种更加便捷的方法。本文将详细介绍如何通过硬盘安装Mac ...

    leopard硬盘安装工具

    新鲜出炉:leopard硬盘安装史重要更新:leopard硬盘安装助手!!支持iso文件! 1、格式化一盘为fat32,或将盘上所有文件(含隐藏的)删空 2、打开程序,选镜象文件(支持iso文件) 3、目标盘选刚才格的盘,点开始进行镜象 4、...

    硬盘安装Leopard

    标题“硬盘安装Leopard”指的是将苹果公司的Mac OS X Leopard操作系统安装到计算机的硬盘上,而非使用光盘或USB驱动器进行安装。Leopard是Mac OS X的第十个主要版本,发布于2007年,它带来了许多新功能和性能改进。...

    snow leopard10A432安装全过程

    snow leopard10A432安装全过程 mac mac os x 安装snow leopard10A432安装全过程 mac mac os x 安装

    Leopard hd install helper v0.3

    用户可能需要这个助手来克服在安装过程中遇到的兼容性、驱动程序或其他技术问题。 由于提供的压缩包子文件的文件名称列表只有一个条目:“Leopard hd install helper v0.3”,我们可以推测这可能是一个单一的可执行...

    Mac Leopard安装好后IDE光驱识别问题完美解决

    Mac Leopard安装好后IDE光驱识别问题完美解决

    Leopard硬盘安装助手0.3

    标题 "Leopard硬盘安装助手0.3" 指的是一个专为苹果Mac OS X Leopard操作系统设计的工具,它的主要功能是帮助用户...用户需谨慎使用,因为早期版本的软件可能存在兼容性问题和未发现的bug,建议在安装前备份重要数据。

Global site tag (gtag.js) - Google Analytics