我正在尝试在我的Xubuntu 13.04 x64系统上安装bzip2-ruby gem。
我正在使用RVM(使用ruby 2.0.0),并通过以下命令安装:
gem install bzip2-ruby
无法安装,这是我收到的输出(取自编译日志):
/home/misutowolf/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb
checking for bzlib.h... yes
checking for BZ2_bzWriteOpen() in -lbz2... yes
creating Makefile
make
compiling bzip2.c
In file included from bzip2.c:5:0:
/home/misutowolf/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0/ruby/backward/rubyio.h:2:2: warning: #warning use "ruby/io.h" instead of "rubyio.h" [-Wcpp]
bzip2.c: In function ‘bz_find_struct’:
bzip2.c:117:71: error: ‘OpenFile’ undeclared (first use in this function)
bzip2.c:117:71: note: each undeclared identifier is reported only once for each function it appears in
bzip2.c:117:81: error: expected expression before ‘)’ token
bzip2.c: In function ‘bz_io_data_finalize’:
bzip2.c:297:13: error: unknown type name ‘OpenFile’
bzip2.c:297:31: error: ‘OpenFile’ undeclared (first use in this function)
bzip2.c:297:41: error: expected expression before ‘)’ token
bzip2.c:298:21: error: request for member ‘f’ in something not a structure or union
bzip2.c:299:28: error: request for member ‘f’ in something not a structure or union
bzip2.c:300:21: error: request for member ‘f’ in something not a structure or union
bzip2.c:302:21: error: request for member ‘f2’ in something not a structure or union
bzip2.c:303:28: error: request for member ‘f2’ in something not a structure or union
bzip2.c:304:21: error: request for member ‘f2’ in something not a structure or union
bzip2.c: In function ‘bz_writer_init’:
bzip2.c:473:9: error: unknown type name ‘OpenFile’
bzip2.c:483:13: warning: assignment from incompatible pointer type [enabled by default]
bzip2.c:483:13: warning: passing argument 1 of ‘rb_io_check_closed’ from incompatible pointer type [enabled by default]
In file included from /home/misutowolf/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0/ruby/backward/rubyio.h:6:0,
from bzip2.c:5:
/home/misutowolf/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0/ruby/io.h:179:6: note: expected ‘struct rb_io_t *’ but argument is of type ‘int *’
bzip2.c:484:13: warning: passing argument 1 of ‘rb_io_check_writable’ from incompatible pointer type [enabled by default]
In file included from /home/misutowolf/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0/ruby/backward/rubyio.h:6:0,
from bzip2.c:5:
/home/misutowolf/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0/ruby/io.h:172:6: note: expected ‘struct rb_io_t *’ but argument is of type ‘int *’
bzip2.c: In function ‘bz_reader_init’:
bzip2.c:698:13: error: unknown type name ‘OpenFile’
bzip2.c:703:13: warning: assignment from incompatible pointer type [enabled by default]
bzip2.c:703:13: warning: passing argument 1 of ‘rb_io_check_closed’ from incompatible pointer type [enabled by default]
In file included from /home/misutowolf/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0/ruby/backward/rubyio.h:6:0,
from bzip2.c:5:
/home/misutowolf/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0/ruby/io.h:179:6: note: expected ‘struct rb_io_t *’ but argument is of type ‘int *’
bzip2.c:704:13: warning: passing argument 1 of ‘rb_io_check_readable’ from incompatible pointer type [enabled by default]
In file included from /home/misutowolf/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0/ruby/backward/rubyio.h:6:0,
from bzip2.c:5:
/home/misutowolf/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0/ruby/io.h:173:6: note: expected ‘struct rb_io_t *’ but argument is of type ‘int *’
bzip2.c: In function ‘bz_next_available’:
bzip2.c:779:18: warning: operation on ‘bzf->buf’ may be undefined [-Wsequence-point]
bzip2.c: In function ‘bz_reader_ungetc’:
bzip2.c:981:18: warning: operation on ‘bzf->buf’ may be undefined [-Wsequence-point]
bzip2.c: In function ‘bz_reader_ungets’:
bzip2.c:1025:18: warning: operation on ‘bzf->buf’ may be undefined [-Wsequence-point]
bzip2.c: In function ‘Init_bzip2_ext’:
bzip2.c:1726:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
make: *** [bzip2.o] Error 1
现在,我几乎没有使用C / C ++的经验,所以我甚至无法开始调试它正在编译的C代码......但是......任何人都有任何想法?我需要一个Ruby BZip2 gem库用于我正在进行的项目,这是我发现的第一个,不确定我是否有任何其他选择。
答案 0 :(得分:0)
显然问题是这个gem似乎不适用于Ruby 2.0.0(至少我无法使它工作)。我通过RVM安装了1.9.3,安装它并且工作正常。我不知道C是否可以修复它以使用2.0.0,所以我只使用1.9.3来完成这个项目。没什么大不了的。