今天编译sqlite3的一个测试程序,明明sqlite的库在/lib目录下,可是gcc总是报ld链接错误,找不到调用的函数符号,最后google了一下gcc用法,加了-Wall参数,并指定库文件就可以了。 网上分析了一下gcc 3.x和4.x的区别,再查看一下Cygwin下面的gcc竟然是3.4版本的,再看看gcc.gnu.org上面,都已经到4.3.2了,怎能不升级?一方面也可以熟悉一下Cygwin的环境。
到gcc的一个镜像站点下载了最新的源码包gcc-4.3.2.tar.gz,在Windows下面可以用winrar解压,一步到位,很是方便。接下来就可以编译了,打开rxvt,进入解压好的源码文件夹,执行
./configure --enable-languages=c,c++
这里我只要求她支持c和c++,所以加了--enable-languages=c,c++选项。不能不说linux世界里面个人定制做得是非常好的。
过程并不顺利,出错了,查看了一下错误,说是需要gmp和mpfr支持,我的Cygwin环境下面没有,再用google搜索gmp和mpfr,分别下了各自的源码,准备编译安装。再看一下mpfr需要gmp支持,所有就只有先编译gmp了。
同样解压并cd进入源码目录,再
./configure
Omg,这次又出错了,原来gmp需要m4支持。我的心一顿,这该不会进入一个无底洞吧?那样可就没完没了。还是先试着安装m4了再说,google,下载源码,解压,再
./configure
这次终于成功了!再
make
make install
没有问题,m4算是安装完成了。接下来继续中断的gmp安装,cd 进入gmp源码目录,继续
./configure
成功,窃喜,继续
make
make install
依然没有任何问题,继续安装mpfr,cd 进入源码目录
./configure
make
make install
都没有问题,总算松了一口气!终于可以再次安装gcc了,进入源码目录,继续
./configure
我看着一行一行闪过的提示,默默祈祷,希望这次能成功。结果还没到三分钟,屏幕停止了闪动,我心里一愣,难道又出现问题了?再仔细查看,并没有找到error,成功了!而且速度真是快!可能与之前运行过configure有关吧。接下来就是编译了,执行
make
花了产不多3个小时,总算成功!
再make install,很快OK,迫不及待地
gcc -v
发现版本并没有变化,再
g++ -v
版本已经变成了4.3.2,难道我configure出错了?再仔细查看了一遍,参数是--enable-languages=c,c++,没问题。真是奇怪了!!!突然灵光一闪,关掉rxvt,再重启rxvt,继续
gcc -v
版本变成了4.3.2。Thank God!终于圆满成功!不过这个比较奇怪的问题就不得而知了,估计与Cygwin下的bash有关吧!
昨天配置好了Cygwin,发现它自带的Bash运行在Windows的cmd shell下,实在不怎么友好,没有太多Linux下面的感觉,google一下,发现Cygwin下面有一个好东东:rxvt,这是一个比较酷的shell,最重要的是差不多可以百分百的定制!赶紧运行Cygwin的setup.exe,选中rxvt,安装,一切顺利,完成,直接打开cmd,输入rxvt,哈哈,出来了,一个新的shell!可是现在这个默认安装的rxvt可不怎么漂亮,继续google,找到了一个好的配置方法:
在~(Linux主目录)下新建一个.Xdefaults文件,内容如下:
Rxvt*title: Cygwin-Rxvt
Rxvt*geometry: 90x40+10+5
Rxvt*background: #BFDF74
Rxvt*foreground: #0C2E53
Rxvt*scrollBar_right: true
Rxvt*colorBD: 1
Rxvt*font: courier new
Rxvt*blodFont: Courier New
Rxvt*saveLines: 2000
Rxvt.backspacekey: ^?
Rxvt*loginShell: True
Rxvt*cursorColor:#338AE5
!!Rxvt*reverseVideo:True
!! Rxvt*multichar_encoding:gb
!! VIM-like colors
Rxvt*color0: #000000
!Rxvt*color1: #FFFFFF
Rxvt*color1: #911B08
Rxvt*color2: #00A800
Rxvt*color3: #DD0000
Rxvt*color4: #0000A8
Rxvt*color5: #A800A8
Rxvt*color6: #00A8A8
Rxvt*color7: #D8D8D8
Rxvt*color8: #B5613B
Rxvt*color9: #966BEB
Rxvt*color10: #00A800
Rxvt*color11: #FFFF00
Rxvt*color12: #0000A8
Rxvt*color13: #A800A8
Rxvt*color14: #00A8A8
Rxvt*color15: #B5613B
.Xdefaults文件的配置详解见http://milton.bloghome.cn/posts/64536.html。
为了让Cygwin默认启动rxvt作为shell,还需要修改Cygwin安装目录下面的Cygwin.bat如下:
@echo offps:只要配置好了Cygwin 下面bash可以支持中文,上面的配置即可使rxvt支持中文,不需要像网上很多博客提到的要加上-km gb的选项,而且.Xdefaults里面也不需要设置Rxvt*multichar_encoding:gb,我上面的文件中使用!!注释掉了的。
C:
chdir C:\cygwin\bin
set EDITOR=vi
set VISUAL=vi
set CYGWIN=codepage:oem tty binmode title
rxvt -e bash --login -i
截个图看一下效果:

最近看Sqlite和Berkeley DB方面的资料,发现这类开源的软件都是在Linux下面开发的,要编译他们提供的源码,得用Linux才行。我的机器装的是XP,用了差不多半年,实在不想再折腾装一个Linux,突然间想起了Cygwin,据说用它来模拟Linux环境很不错!以前试着装过,可惜没能装成功,因为只有国外的镜像站点,无法连接上。用google搜索了一下,首先映入眼帘的是cygwin.cn,Cygwin的中文镜像站点,链接一下,速度飞快!这次终于可以安装了!下载setup.exe,一路next,安装完成后在、开始菜单里面多了一个Cygwin的条目,里面是Cygwin Bash Shell,点击打开,出来的是一个类似于cmd的console,不过提示符变成了Linux下面的$,哈哈,多么亲切!
来点简单的test,输入ls,gcc -v,g++ -v,ps,看看熟悉的Linux命令在这里表现如何:都可以执行,不过显示中文会出现乱码,恐怕要设置Cygwin的环境,以便让它可以显示中文。Google一下,呵呵,这方面的资料还真多,具体设置如下:
1. 编辑用户home目录下的文件.inputc,去除以下几行的注释:
set meta-flag on
set convert-meta off
set output-meta on
set input-meta on
2 编辑用户home目录下的文件.bash_profile,在文件末尾加上下面几行:
alias ls='ls --color --show-control-chars'
export LC_ALL=zh_CN.GB23122
export LC_CTYPE=zh_CN.GB2312
export LANG=zh_CN.GB2312
export XMODIFIERS="@im=Chinput"3
stty cs8 -istrip
stty pass8
export LESSCHARSET=latin1
再重启Cygwin bash shell,ls一下,中文正常显示,大功告成,以后可以Windows,Linux通吃了!