linux下ruby使用tcl/tk编程环境设置

正常情况下最新的ruby都是不带tcl/tk选项编译的,所以我们在运行tcl/tk代码时都会发生找不到tk库的错误。解决办法很简单只要以tcl/tk选项编译ruby即可。

这里以ubuntu 15.04为例,前提是先安装rvm;如果不用rvm也可以,不过要自己下载源代码回来编译,不如一步到位用rvm省事。

首先到ActiveTcl官网下载tcl:
http://www.activestate.com/activetcl/downloads

注意不要选择最新的8.6.x,因为可能兼容性有问题,需要下载8.5.x或8.4.x:

解压后直接运行install.sh,如果要安装到特定目录可能要用sudo安装。一路next之后,ActiveTcl和Tk就装好了。

接下来可以使用rvm安装最新的ruby,别忘了加上tcl/tk选项支持:

rvm reinstall ruby-2.2.2 --with-tcl --with-tk

如果安装失败,很有可能是tcl/tk环境没有设置好;可以进入对应ruby的源代码目录:

wisy@wisy-pad:~/.rvm/src/ruby-2.2.2/ext/tk$ pwd
/home/wisy/.rvm/src/ruby-2.2.2/ext/tk
ruby extconf.rb

最后一句命令的输出可以看到到底是由于神马原因rvm reinstall ruby失败。如果你的源代码文件里没有ext文件夹表示源代码不完整,需要下载完整的ruby源代码。
(PS:rvm不同版本ruby的可执行文件放在~/.rvm/rubies目录下;不同版本ruby的源代码放在~/.rvm/src目录下)

接下来我们可以写一个测试代码看看:

#!/usr/bin/ruby

require 'tk'

msg="你好!中国"
root=TkRoot.new{title msg}
label_msg=TkLabel.new(root){
    text  msg
    pack :padx=>2,:pady=>2,:side=>'top'
    font "arial 20 bold"
}

Tk.mainloop

使用 ./1.rb运行,如果没问题则应该有窗口出现:

最后我们还要做点rvm的“收尾”工作:

rvm use ruby-2.2.2  #设置当前使用的ruby版本
rvm use 2.2.2 --default #设置ruby的默认版本
rvm docs generate #生成rdoc文档

(PS: Ruby/Tk 扩展

TkButton、TkCanvas 等都是 Tk 的核心小部件。除此之外,还有很多第三方的小部件,我们称它们为“Tk 扩展”。这些第三方的 Tk 小部件往往比核心小部件更加强大。既然有“Tk 扩展”,就必然有“Ruby/Tk 扩展”与之对应。您可以在 Ruby 的安装目录中找到它们:目录“RUBY_INSTALL_DIR\lib\ruby\RUBY_VERSION_NUMBER\tk”中是核心 Ruby/Tk 代码,而目录“RUBY_INSTALL_DIR\lib\ruby\RUBY_VERSION_NUMBER\tkextlib”中是 Ruby/Tk 扩展代码。 )

时间: 2024-10-30 23:40:00

linux下ruby使用tcl/tk编程环境设置的相关文章

Mac OS X下让ruby支持tcl/tk

    我记得在老早在OS X10.8下使用ruby1.9.x的时候只要到下载安装ActiveTcl8.5,没怎么配置就运行tk好好的.但是近日想重新执行下tk代码,发现在require 'tk'的时候就报错鸟!现在用的是ruby2.1.3版本.上网搜了一下,1.9.x之后的版本默认不再将tcl/tk支持编译到ruby里面,so如果你想用则必须重新编译ruby!我勒个去!就不能做成个gem吗?但在多种外围尝试无果的的情况下只有一条路,就是重新编译ruby了...     到ruby官网下载最新的

Linux下Hadoop2.6.0集群环境的搭建

本文旨在提供最基本的,可以用于在生产环境进行Hadoop.HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用. 基础环境 JDK的安装与配置 现在直接到Oracle官网(http://www.oracle.com/)寻找JDK7的安装包不太容易,因为现在官方推荐JDK8.找了半天才找到JDK下载列表页的地址(http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html).因

Linux下通过ioctl系统调用来获取和设置网络信息

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/ioctl.h> #include <net/if.h> #include <arpa/inet.h> #include <linux/netlink.h> #include <linux/rtnetlink.h> 

Linux下安装IPython配置python开发环境教程_Linux

一.IPython简介 IPython 是一个交互式的shell,比默认终端好用,支持自动缩进,并且内置了很多有用的功能和函数.可以在任何操作系统上使用. 二.安装方法 1.pip 在线安装 pip install ipython pip install "ipython[notebook]" 2.下载安装 可以到GitHub 下载安装包,切换到目录下然后运行下面的脚本 Python setup.py install 三.简单使用 打开Linux终端,在命令行中输入 root@Linu

LINUX 下LAMP之yum方法部署环境

一. 系统组成 系统由前台网站和后台保种服务两部分组成,其中后台保种可以扩展成多台设备,提高保种的资源量以及性能.下面安装以houtaiip代表后台保重服务器ip地址,qiantaiip代表前台网站ip地址.前台网站需要给两个域名,通过配置虚拟主机,一个给nexusphp(例如:www.nexusphp.com),一个给ekucms(例如www.ekucms.com).下面将会以这两个域名为例进行安装说明,安装的系统均为centos6.4(全新系统安装,否则版本过低会导致网站运行出现问题) 首先

在 Linux 下使用 RAID(六):设置 RAID 10 或 1 + 0(嵌套)

RAID 10 是组合 RAID 1 和 RAID 0 形成的.要设置 RAID 10,我们至少需要4个磁盘.在之前的文章中,我们已经看到了如何使用最少两个磁盘设置 RAID 1 和 RAID 0. 在这里,我们将使用最少4个磁盘组合 RAID 1 和 RAID 0 来设置 RAID 10.假设我们已经在用 RAID 10 创建的逻辑卷保存了一些数据.比如我们要保存数据 "TECMINT",它将使用以下方法将其保存在4个磁盘中. 在 Linux 中创建 Raid 10(LCTT 译注:

Linux下安装Apache+ASP环境的原因

 为什么要在Linux下安装ASP环境?且看这几个原因够不够:     A. 作为Linux下的开发环境     B. 当IIS中的ASP仅用于后台,同时使用人数较少.前台页面主要以HTML静态页面展示,ASP用来做的事情较少,本身对系统的负担很轻 综合以上,当ASP显得有点鸡肋时,相应的应用完全可以移植到Linux下,以充分发挥Linux下系统平台优势和资源优势. 因为ASP本为Windows下IIS的原生产物,移植到Linux下确实有些怪异,所以实现方案也比较少,目前能找到的基本以Perl转

gtk+-linux 下图形界面编程gtk_layout_new()参数的设置是怎么发挥效用的呢?

问题描述 linux 下图形界面编程gtk_layout_new()参数的设置是怎么发挥效用的呢? GtkWidget*gtk_layout_new(GtkAdjustment*hadjustment,GtkAdjustment*vhadjustment); 参数hadjustment,vadjustment设置怎么发挥影响? 下面的列子(layout里放置一个按钮)怎么没有影响 1 #include<gtk/gtk.h> 2 int main(int argc,char**argv) 3 {

怎样在Windows和Linux下写相同的代码

目前,Linux在国内受到了越来越多的业内人士和用户的青睐.相信在不久的将来,在国内为Linux开发 的应用软件将会有很大的增加(这不,金山正在招兵买马移植WPS呢).由于未来将会是Windows和Linux两强鼎立的格局,怎样能够使得开发的软件保持最大的可移植性就成了一个很重要的问题.小弟经过一段时间的摸索,找到了这个问题的圆满解答. 在Linux下,所有的开发工具和库都属于自由软件,可以免费获得并且功能强大.如果这些工具和库都有相应的Windows版,那么我们就能够在Windows和Linu