--- extconf.rb.orig Tue Feb 26 12:03:53 2008 +++ extconf.rb Tue Feb 26 11:52:16 2008 @@ -1,5 +1,7 @@ require "mkmf" +$LIBS += " -lstdc++ -laspell" + have_header("ruby.h") have_header("aspell.h") have_library("aspell") |
I recently installed the raspell gem on my development box as part of an evaluation of ultrasphinx.
Unfortunately, the native extension to raspell doesn’t link in the dynamic libraries it uses. A fix is provided below.
Note, using the raspell with ultrasphinx also caused a ruby core dump, this time in an assertion from the configuration for aspell. OpenBSD uses aspell-0.50.5 and after upgrading aspell to 0.60.5, raspell started working fine.
Here is the output from the dynamic library problem:
** Starting Rails with development environment...
ruby:/usr/local/lib/ruby/gems/1.8/gems/raspell-1.1/lib/raspell.so: undefined symbol 'new_aspell_config'
lazy binding failed!
/home/face/urevz/vendor/plugins/ultrasphinx/lib/ultrasphinx/spell.rb:33: [BUG] Segmentation fault
ruby 1.8.6 (2007-09-24) [i386-openbsd4.2]
A little poking around and I noticed the native library, raspell.so, doesn’t link in libaspell!
A quick fix is to add the libs to extconf.rb and rebuild the library:
- cd /usr/local/lib/ruby/gems/1.8/gems/raspell-1.1/ext
- edit extconf.rb and add the line $LIBS = ” -lstdc+ -laspell”
- sudo make clean
- sudo make
- sudo cp raspell.so ../lib/.