我按照这些说明安装了linalg库(以及LAPACK& f2c):https://www.quora.com/Installation-Instructions/How-do-I-install-Ruby-linalg-library-on-Mac
对于那些不在quora上的人,我一直在记录安装说明: http://pastebin.com/QbvE5MJc
我让linalg成功地在一台机器上工作,但现在我在另一台机器上尝试它并且它不起作用。一切正常,直到我真正尝试在红宝石中使用它。
ldubinets@lm16 ~/Code/lapack/linalg $ irb
irb(main):001:0> require 'linalg'
LoadError: /usr/local/lib/site_ruby/1.9.1/i686-linux/lapack.so: undefined symbol: _gfortran_concat_string - /usr/local/lib/site_ruby/1.9.1/i686-linux/lapack.so
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/local/lib/site_ruby/1.9.1/linalg.rb:7:in `<top (required)>'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from (irb):1
from /usr/bin/irb:12:in `<main>'
我的机器正在运行Linux Mint 16.刚刚安装了全新安装。
我已经在互联网上读到我必须在某个地方使用-lgfortran链接gfortran http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=4&t=2957
在linalg / ext / linalg和linalg / ext / lapack中有一个包含此行的Makefile
LIBS = $(LIBRUBYARG_SHARED) -llapack -lblas -lpthread ...
我添加了&#34; -lgfortran&#34;并重新安装,但它根本没有帮助。
如何在此安装中链接到gfortran?
提前致谢。
编辑:
好吧,既然lapack.so抛出了错误,似乎我需要在安装lapack时链接gfortran。是这样吗? 在互联网的其他地方,有人说这可能是由于冲突的fortran编译器(g77和gfortran)造成的,虽然我没有安装g77,所以我不知道情况会是怎样的。
答案 0 :(得分:0)
我怀疑,每个Makefile中的这一行都是罪魁祸首:
LIBS = $(LIBRUBYARG_SHARED) -llapack -lblas -lpthread ...
将-lgfortran
添加到此行会使一切正常,但需要注意一点。当您运行sudo ruby install.rb
时,它会重新生成Makefile。因此,我采取了解决问题的方法是:
sudo ruby install.rb config # generates the makefiles
sudo vim ext/linalg/Makefile # add -lgfortran to that line
sudo vim ext/linalg/Makefile # add -lgfortran to that line
sudo vim install.rb # find the method config in the Main module and comment out everything inside it (so it won't regenerate the config)
sudo ruby install.rb # does the entire install process, but does't regenerate the config.
这是一种修复它的超级hacky方法,但它有效。如果有人有更好的方法请告诉我!