【问题标题】:Problems installing gsl gem安装 gsl gem 的问题
【发布时间】:2011-09-11 16:47:26
【问题描述】:

我可以在我的主目录中成功安装 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

【问题讨论】:

    标签: ruby gem gsl


    【解决方案1】:

    安装 ruby​​ 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
    

    【讨论】:

    • 在 Mac OSX 上使用 homebrew,brew install gsl114 将为您安装 gsl 1.14
    • 此镜像不再工作。我改用了这个:ftp.unicamp.br/pub/gnu/gsl/gsl-1.14.tar.gz
    • Ubuntu 14.04 中不再存在问题,只需sudo apt-get install libgsl0-dev 一切都会好起来的。
    • @TamerShlash:我的 Jekyll/Octopress 设置需要 gsl 1.14。不幸的是,通过 apt-get 安装 libgsl0-dev 并不能解决问题(在 Ubuntu 14.04 上)。 gem install gsl -v 1.14.7 时我仍然有编译错误。下载并安装 gsl 1.14 对我有用。
    【解决方案2】:

    您使用的是哪个操作系统?

    首先,您需要以 root 身份在您的操作系统上安装 gslgsl-devel RPM... 例如在 Fedora Linux 上:

    sudo yum install -y gsl gsl-devel
    

    然后执行gem install gslbundle install

    没有 gsl-devel 包,它将找不到正确的 C 头文件。

    您还需要确保这些头文件安装在包含在 LD_LIBRARY_PATH 中或在 /etc/ld.so.conf 中列出的位置

    【讨论】:

      【解决方案3】:

      如果你有:

      • GSL 1.16(请咨询gsl-config --version)(例如在 Ubuntu 14.04 中),
      • Ruby 2.1

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

      如果您使用捆绑器来管理项目中的 gem,请在您的 Gemfile 中添加一行:

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

      干杯!

      【讨论】:

        【解决方案4】:

        对于仍在为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,这是一个已弃用且现已删除的方法。

        我的回购更新调用使用Gem::Specification API:

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

        简而言之:

        brew install gsl 在 OSX 上

        在您的 Gemfile 中:

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

        【讨论】:

        • 这会尝试安装 1.14 gem?
        【解决方案5】:

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

        sudo apt-get install libgsl0-dev

        无需手动安装旧版本

        【讨论】:

          【解决方案6】:

          注意它似乎不适用于 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
          

          【讨论】:

          • Ruby 2.1.0 好运了吗?
          【解决方案7】:

          在我全新安装的 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
          

          【讨论】:

            【解决方案8】:

            对于 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 现在不实际

            【讨论】:

            • 实际上,在 Mac OS X Yosemite 新安装上,我需要这些说明,但 1.15 ... curl -O http://ftp.unicamp.br/pub/gnu/gsl/gsl-1.15.tar.gz
            【解决方案9】:

            lsb_release -a Ubuntu 14.04.1 LTS
            ruby --version ruby 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


            必要时在 ruby​​ 文件中使用require "gsl"

            【讨论】:

              【解决方案10】:

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

              【讨论】:

                猜你喜欢
                • 2011-08-03
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-11-10
                • 2013-05-22
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多