When I try the command "gem install thrift" with Ruby 1.9.1, I got a compilation error with something related to a C function "strlcpy()".
Then I searched the web. It seems I am not alone and the community know it.
However I do not want to wait for official update, I want to try Cassandra and Thrift is a dependency I have to use now.
So, read on if you want a dirty fix.
Start command line console and run:
$ gem install thrift
If you got the error with "strlcpy", you should have thrift code downloaded in your ruby gems folder.
It is "C:/Ruby/lib/ruby/gems/1.9.1/gems/thrift-0.2.0" for my computer on Windows.
$ cd C:/Ruby/lib/ruby/gems/1.9.1/gems/thrift-0.2.0/ext
If you are using linux, check the lib/.../ext folder.
Open "extconf.rb" and "struct.c" with a text editor. Comment out HAVE_STRLCPY in "struct.c" like this:
/*
#ifndef HAVE_STRLCPY
static
size_t
strlcpy (char *dst, const char *src, size_t dst_sz)
{ ...
}
#endif
*/
Comment out have_func line in "extconf.rb" like this:
# have_func("strlcpy", "string.h")
Then run:
$ cd C:/Ruby/lib/ruby/gems/1.9.1/gems/thrift-0.2.0
$ ruby setup.rb
$ gem spec C:/Ruby/lib/ruby/gems/1.9.1/cache/thrift-0.2.0.gem --ruby > /
C:/Ruby/lib/ruby/gems/1.9.1/specifications/thrift-0.2.0.gemspec
$ gem list
You should see "thrift (0.2.0)" is in your local installed gem list.
Fix Thrift 0.2.0 Installation with Ruby 1.9.1
本文提供了一种解决在 Ruby 1.9.1 上安装 Thrift 时遇到的 strlcpy 编译错误的方法。通过修改源代码文件,可以绕过这一问题并成功安装。

被折叠的 条评论
为什么被折叠?



