ruby0.4 源码分析之编译


昨天读ruby代码,编译不了,于是就随便翻,从makefile文件入手,先看最简单的
version.o : version.c ruby.h defines.h \
  version.h
打开version.c代码也少,
static VALUE rb_version;
VALUE rb_readonly_hook();
Init_version()
{
    rb_version = str_new2(RUBY_VERSION);
    rb_define_variable("$VERSION", &rb_version, Qnil, rb_readonly_hook);
}
show_version()
{
    printf("ruby - version %s (%s)\n", RUBY_VERSION, VERSION_DATE);
}
我加了个main,单独编译,居然报错,搞了半天,发现是其中Init_version()引用了其它的文件,把这个函数注释掉,就编译成功了。
不知为什么一个常量搞这么复杂。
编译时,最大的问题就是dbm.c编译不成功,说找不到dbm_open等函数,我依照网上的例子,单独写一个用gdbm的程序,只是打开,关闭,编译时加上-lgdbm_compact等选项,居然能顺利编译,所以我就直接放弃了编译ruby0.49的想法了。
毕竟我的目标是想读其中的源码,实在编译不了,也没法。

猜你喜欢

转载自blog.csdn.net/woshiyilitongdouzi/article/details/79546745