[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:003835] Re: ruby-lapackのextconf.rb



西澤さま、

村上真也です。

さっそくのお返事ありがとうございます。

> RbConfig::CONFIG["CC"] = ENV["CC"]
> についてはちょっと気持ちが悪いです。
> 確認ですが、FreeBSD では、
> ruby は llvm/clang でコンパイルされているが、 blas は gcc でコンパイルされており、
> ruby-lapack は gcc でコンパイルする必要がある
> ということでしょうか。

はい、そうです。
llvm/clangにはfortranコンパイラがありませんので、代わりに
blas, lapackはgfortranでコンパイルされています。

> RbConfig::CONFIG["CC"] には ruby をコンパイルしたものが入っているはずで有り、
> ruby-lapack をそのコンパイラとは別のものを使わなければならないという理由がちょっと分かっていません。

blas, lapackのライブラリをnmすると、gfortranという名前を含んだ
関数が現れており、gccファミリーのコンパイラでコンパイルしなければ
リンクが完全に解決されないように見えます。

RbConfig::CONFIG["CC"]=ENV["CC"]
をコメントすると、

Building native extensions.  This could take a while...
ERROR:  Error installing ruby-lapack-1.6.gem:
	ERROR: Failed to build gem native extension.

        /usr/local/bin/ruby20 extconf.rb --build-args
checking for main() in -lblas... no
checking for main() in -llapack... no
  liblapack.{a|so} was not found.
  If you have liblapack.{a|so}, try the following:
    % ruby extconf.rb --with-lapack-lib=path
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

とエラーになります。

本家に入らなくてもとくに問題はありませんです(パッケージ側で対処します)。

よろしくお願い致します。

From: Seiya Nishizawa <seiya@xxxxxxxxxxxxxx>
Date: Wed, 21 Jan 2015 09:09:57 +0000

> 村上さん
> 
> find_library("blas", nil)
> は問題無いと思います。
> 
> RbConfig::CONFIG["CC"] = ENV["CC"]
> についてはちょっと気持ちが悪いです。
> 確認ですが、FreeBSD では、
> ruby は llvm/clang でコンパイルされているが、 blas は gcc でコンパイルされており、
> ruby-lapack は gcc でコンパイルする必要がある
> ということでしょうか。
> RbConfig::CONFIG["CC"] には ruby をコンパイルしたものが入っているはずで有り、
> ruby-lapack をそのコンパイラとは別のものを使わなければならないという理由がちょっと分かっていません。
> 
> 西澤誠也
> 
> On Wed Jan 21 2015 at 17:56:16 Shin-ya Murakami <murashin@xxxxxxxxxxxxxx>
> wrote:
> 
>> 西澤さま、
>>
>> 村上真也です。
>>
>> rubygemのruby-lapackをFreeBSD上でパッケージングしようとしています。
>> lapackにblasが含まれていないので、
>>
>>   * extconf.rbでlapackより先にblasのチェックをしないと
>>     find_library("lapack")でこける
>>
>> のと、コンパイラがデフォルトでllvm/clangなので、
>>
>>   * gccを使うようにしないといけない
>>
>> という点に気を付けないとビルドできません。そこで以下のような
>> パッチを当てることにしました。
>>
>> --- ext/extconf.rb.orig 2015-01-21 17:32:01.000000000 +0900
>> +++ ext/extconf.rb      2015-01-21 17:32:16.000000000 +0900
>> @@ -31,6 +31,8 @@
>>    end
>>     end
>>
>> +RbConfig::CONFIG["CC"]=ENV["CC"]
>> +find_library("blas", nil)
>>  dir_config("lapack")
>>   unless find_library("lapack", nil)
>>   library_not_found("lapack",nil)
>>
>> もし(refineして頂いて)本家に取り込んで頂けるならFreeBSD側は
>> 楽になりますが、いかがでしょうか。
>>
>> よろしくお願い致します。
>> ----
>> Shin-ya Murakami
>> email: murashin@xxxxxxxxxxxxxx
>> WWW: http://www.gfd-dennou.org/member/murashin/
----
Shin-ya Murakami
email: murashin@xxxxxxxxxxxxxx
WWW: http://www.gfd-dennou.org/member/murashin/