不想使用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 OS X Snow Leopard(版本 10.6)系统下安装 Ruby 和进行 Ruby on Rails 的开发,是许多开发者特别是初学者可能会遇到的需求之一。尽管 Snow Leopard 已经是一个相对较老的操作系统版本,但仍然有不少用户由于...
这些内容可能帮助用户了解如何正确使用新的功能,避免在安装过程中遇到问题。此外,可能还会附带一些必要的驱动程序或补丁,以确保在不同硬件配置上的兼容性和稳定性。 总之,"leopard硬盘安装助手v0.3"的发布,...
在安装前,了解可能存在的兼容性问题,并准备相应的解决方案。 8. **更新和维护**:安装老版本的软件意味着可能错过了一些新功能和安全性修复。理解这一点,并定期检查是否有更新或者替代方案。 9. **社区支持**:...
然而,对于一些用户来说,安装过程可能会遇到挑战,特别是那些希望在硬盘上全新安装或升级现有系统的用户。这就是“Leopard硬盘安装助手”发挥作用的地方。 Leopard硬盘安装助手是一款专为Mac用户设计的工具,旨在...
Leopard硬盘安装助手~~~安装MAC OS~必备软件~
新鲜出炉:leopard硬盘安装史重要更新:leopard硬盘安装助手!!支持iso文件! 1、格式化一盘为fat32,或将盘上所有文件(含隐藏的)删空 2、打开程序,选镜象文件(支持iso文件) 3、目标盘选刚才格的盘,点开始进行镜象 4、...
在VMWare中安装MAC OS X Snow Leopard 10.6是一种常见的在个人计算机上体验苹果操作系统的解决方案。这种方法避免了物理硬盘分区和刻录光盘的步骤,而是直接使用虚拟化软件和DMG镜像文件进行安装。以下是一个详细的...
### 硬盘安装Leopard方法详解 #### 一、前言 在计算机技术发展初期,用户想要体验不同操作系统往往需要通过光盘进行安装。随着技术的进步,硬盘安装成为了一种更加便捷的方法。本文将详细介绍如何通过硬盘安装Mac ...
新鲜出炉:leopard硬盘安装史重要更新:leopard硬盘安装助手!!支持iso文件! 1、格式化一盘为fat32,或将盘上所有文件(含隐藏的)删空 2、打开程序,选镜象文件(支持iso文件) 3、目标盘选刚才格的盘,点开始进行镜象 4、...
标题“硬盘安装Leopard”指的是将苹果公司的Mac OS X Leopard操作系统安装到计算机的硬盘上,而非使用光盘或USB驱动器进行安装。Leopard是Mac OS X的第十个主要版本,发布于2007年,它带来了许多新功能和性能改进。...
snow leopard10A432安装全过程 mac mac os x 安装snow leopard10A432安装全过程 mac mac os x 安装
用户可能需要这个助手来克服在安装过程中遇到的兼容性、驱动程序或其他技术问题。 由于提供的压缩包子文件的文件名称列表只有一个条目:“Leopard hd install helper v0.3”,我们可以推测这可能是一个单一的可执行...
Mac Leopard安装好后IDE光驱识别问题完美解决
标题 "Leopard硬盘安装助手0.3" 指的是一个专为苹果Mac OS X Leopard操作系统设计的工具,它的主要功能是帮助用户...用户需谨慎使用,因为早期版本的软件可能存在兼容性问题和未发现的bug,建议在安装前备份重要数据。