21

我可以在我的主目录中成功安装 gsl 库,但是当我尝试安装 gsl gem 时,我得到了一大堆我不明白的错误。我想知道是否有人可以给我一些想法,为什么我会收到这些错误。我可以说我有:

安装gsl成功;至少它看起来是这样的。我指出了 gsl-config 的路径

这是错误日志的样子:

  Building native extensions.  This could take a while...
  ERROR:  Error installing gsl:
    ERROR: Failed to build gem native extension.

  /home/ted/ruby-1.9.1/bin/ruby extconf.rb install gsl
  checking gsl version... 1.15
  checking gsl cflags... -I/home/ted/gsl-1.15/include
  checking for main() in -lcblas... no
  checking gsl libs... -L/home/ted/gsl-1.15/lib -lgsl -lgslcblas -lm
  checking for round()... no
  checking for rngextra/rngextra.h... no
  checking for qrngextra/qrngextra.h... no
  checking for ool/ool_version.h... no
  checking for tensor/tensor.h... no
  checking for jacobi.h... no
  checking for gsl/gsl_cqp.h... no
  checking for gsl/gsl_multimin_fsdf.h... no
  checking for gsl_poly_solve_quartic() in -lgsl... no
  checking for gsl_eigen_francis() in -lgsl... no
  checking for ndlinear/gsl_multifit_ndlinear.h... no
  checking for alf/alf.h... no
  checking rb-gsl version...1.14.7
  checking ruby version... 1.9.1
  checking for graph... no
  checking for narray.h... yes
  checking for tamu_anova/tamu_anova.h... no
  checking for main() in -ltamuanova... no
  creating Makefile

  make
  gcc -I. -I/home/ted/ruby-1.9.1/include/ruby-1.9.1/x86_64-linux -I/home/ted/ruby-1.9.1/include/ruby-1.9.1/ruby/backward -I/home/ted/ruby-1.9.1/include/ruby-1.9.1 -I. -DHAVE_NARRAY_H  -I/home/ted/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/narray-0.6.0.1/. -I/home/ted/ruby-1.9.1/lib/ruby/site_ruby/1.9.1/x86_64-linux    -fPIC  -Wall -I../include  -I/home/ted/gsl-1.15/include  -o sf_bessel.o -c sf_bessel.c
  In file included from sf_bessel.c:13:
  ../include/rb_gsl_sf.h:15:24: error: gsl/gsl_sf.h: No such file or directory
  ../include/rb_gsl_sf.h:16:27: error: gsl/gsl_errno.h: No such file or directory
  ../include/rb_gsl_sf.h:17:28: error: gsl/gsl_vector.h: No such file or directory
  In file included from ../include/rb_gsl_sf.h:18,
                   from sf_bessel.c:13:
  /home/ted/gsl-1.15/include/gsl/gsl_math.h:23:25: error: gsl/gsl_sys.h: No such file or directory
  In file included from sf_bessel.c:13:
  ../include/rb_gsl_sf.h:19:29: error: gsl/gsl_complex.h: No such file or directory
  In file included from ../include/rb_gsl.h:20,
                   from ../include/rb_gsl_sf.h:21,
                   from sf_bessel.c:13:
  ../include/rb_gsl_common.h:23:28: error: gsl/gsl_matrix.h: No such file or directory
  ../include/rb_gsl_common.h:24:33: error: gsl/gsl_permutation.h: No such file or directory
  ../include/rb_gsl_common.h:25:32: error: gsl/gsl_ieee_utils.h: No such file or directory
  In file included from ../include/rb_gsl.h:20,
                   from ../include/rb_gsl_sf.h:21,
                   from sf_bessel.c:13:
  ../include/rb_gsl_common.h:322: warning: type defaults to ‘int’ in declaration of ‘gsl_complex’
  ../include/rb_gsl_common.h:322: error: expected ‘;’, ‘,’ or ‘)’ before ‘*’ token
  ../include/rb_gsl_common.h:324: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
  ../include/rb_gsl_common.h:325: error: expected ‘)’ before ‘*’ token
  ../include/rb_gsl_common.h:326: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
  ../include/rb_gsl_common.h:328: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
  ../include/rb_gsl_common.h:329: error: expected ‘)’ before ‘*’ token
  ../include/rb_gsl_common.h:330: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
  ../include/rb_gsl_common.h:340: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ary2complex’
  In file included from ../include/rb_gsl.h:21,
                   from ../include/rb_gsl_sf.h:21,
                   from sf_bessel.c:13:
  ../include/rb_gsl_math.h:24: error: expected ‘)’ before ‘(’ token
  In file included from ../include/rb_gsl.h:22,
                   from ../include/rb_gsl_sf.h:21,
                   from sf_bessel.c:13:
  ../include/rb_gsl_complex.h:19:34: error: gsl/gsl_complex_math.h: No such file or directory

...

  sf_bessel.c: In function ‘rb_gsl_sf_bessel_zero_J1_e’:
  sf_bessel.c:643: error: ‘gsl_sf_bessel_zero_J1_e’ undeclared (first use in this function)
  sf_bessel.c: In function ‘rb_gsl_sf_bessel_zero_Jnu’:
  sf_bessel.c:648: error: ‘gsl_sf_bessel_zero_Jnu’ undeclared (first use in this function)
  sf_bessel.c: In function ‘rb_gsl_sf_bessel_zero_Jnu_e’:
  sf_bessel.c:653: error: ‘gsl_sf_bessel_zero_Jnu_e’ undeclared (first use in this function)
  make: *** [sf_bessel.o] Error 1


  Gem files will remain installed in /home/ted/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/gsl-1.14.7 for inspection.
  Results logged to /home/ted/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/gsl-1.14.7/ext/gem_make.out
4

10 回答 10

21

安装红宝石 GSL:

Ubuntu 11.10 包含一个较新版本 (1.15) 的 libgsl0,它与 ruby​​/gsl 不兼容:

必须安装旧版本 1.14才能使 ruby​​/gsl 工作:

curl -O http://mirror.veriportal.com/gnu/gsl/gsl-1.14.tar.gz
tar xvzf gsl-1.14.tar.gz
cd gsl-1.14
./configure
make
sudo make install
sudo gem install --conservative --no-ri --no-rdoc gsl

安装工作正常并在 Ubuntu 和 Debian Squeeze 上进行测试:

Fetching: narray-0.6.0.1.gem (100%)
Building native extensions.  This could take a while...
Fetching: gsl-1.14.7.gem (100%)
Building native extensions.  This could take a while...
Successfully installed narray-0.6.0.1
Successfully installed gsl-1.14.7
2 gems installed
于 2012-08-19T20:02:51.600 回答
10

which OS are you on?

first you need to install gsl and gsl-devel RPMs on your OS as root... e.g. on Fedora Linux:

sudo yum install -y gsl gsl-devel

then do the gem install gsl or bundle install

without the gsl-devel package, it will not find the correct C-header files.

You also need to make sure that those header files are installed in a location which is included in either the LD_LIBRARY_PATH, or listed in /etc/ld.so.conf

于 2011-11-22T06:38:30.163 回答
7

如果你有:

  • GSL 1.16(检查gsl-config --version)(例如在Ubuntu 14.04中),
  • 红宝石 2.1

然后尝试https://github.com/siefca/rb-gsl - 它已针对此类配置进行了调整。
它也应该适用于 Ruby 1.9 和 Ruby 2.0。

如果您使用 bundler 来管理项目中的 gem,那么在您的Gemfile:

gem 'gsl', :git => 'git://github.com/siefca/rb-gsl'

干杯!

于 2014-06-29T00:28:00.120 回答
5

在 ubuntu 13.04 下,这解决了这个问题:

sudo apt-get install libgsl0-dev

无需手动安装旧版本

于 2013-06-28T09:37:21.950 回答
5

对于仍在努力解决此gsl_matrix_complex_equal问题的任何人。

如果您运行brew install gsl了在撰写本文时将安装 1.15,然后尝试安装 ruby​​ 绑定,您可能会遇到此问题。

使用这个 repo 作为你的 rb-gsl gem 源可以解决这个问题: https ://github.com/30robots/rb-gsl

但是,如果您有较新版本的 ruby​​gems,则该 repo 会调用Gem#searcher已弃用且现已删除的方法。

我的 repo 更新调用使用Gem::SpecificationAPI:

https://github.com/whistlerbrk/rb-gsl

简而言之:

brew install gsl在 OSX 上

在您的 Gemfile 中:

gem 'gsl', :git => 'git://github.com/whistlerbrk/rb-gsl.git'

于 2013-02-26T19:31:03.237 回答
2

注意它似乎不适用于 Ruby 2.1.0。

对于 Ubuntu 12.04 LTS 和 Ruby 2.0.0:

cd ~
wget ftp://ftp.gnu.org/gnu/gsl/gsl-1.15.tar.gz
tar xvzf gsl-1.15.tar.gz
cd gsl-1.15
./configure
make
sudo make install

检查是否正确安装了 GSL 1.15

gsl-config --version

然后安装 gem (gsl 1.15.3)

gem install gsl
于 2014-01-20T12:38:19.747 回答
2

在我全新安装的Mac OS X Yosemite中,我特别需要 1.15.3,而自制软件无法为我提供(没有brew install gsl115

curl ftp://ftp.gnu.org/gnu/gsl/gsl-1.15.tar.gz > gsl-1.15.tar.gz
tar xvzf gsl-1.15.tar.gz
cd gsl-1.15
./configure
make
sudo make install
gem install gsl
于 2015-08-19T04:40:54.343 回答
1

对于 ubuntu 13.10,ruby 2.0.0 接下来可以正常工作-

curl -O http://ftp.unicamp.br/pub/gnu/gsl/gsl-1.16.tar.gz
tar xvzf gsl-1.16.tar.gz
cd gsl-1.16
./configure
make
sudo make install
sudo gem install --conservative --no-ri --no-rdoc gsl

注意:Ami Navon 写道-

必须安装旧版本 1.14 才能使 ruby​​/gsl 工作

现在对于 gsl-1.16/ruby-2.0.0 这不是实际的

于 2013-12-13T08:38:32.627 回答
1

lsb_release -a Ubuntu 14.04.1 LTS
ruby --version 红宝石 2.1.2p95


重要提示:安装 gsl 开发包( https://askubuntu.com/a/490475/121418 )
sudo apt-get install libgsl0-dev

在 Gemfile 中添加这一行
gem 'rb-gsl'

通过终端安装 gem
bundle install


验证
bundle show rb-gsl
/.rvm/gems/ruby-2.1.2/gems/rb-gsl-1.16.0.4

gsl-config --version
1.15


require "gsl"如有必要,在 ruby​​ 文件中使用

于 2015-02-26T08:22:18.557 回答
1

这也适用于 ubuntu 16.04 LTS 和 ruby​​ 2.2.2
sudo apt-get install libgsl0-dev

于 2018-04-25T20:03:09.737 回答