2012-04-25 1 views
3

numpy(Pythonの数値ライブラリ)の最新バージョンをインストールしたいと思いますが、バージョン(v1.6.1)はまだUbuntu Oneiric repositoriesにはありません。私が手作業でインストールすると、numpyは、(numpyで使用されているFortranライブラリ)を構築した同じコンパイラでビルドする必要があることが、INSTALLファイルで読み取られました。残念ながら、私はどのコンパイラがあるのか​​分かりません。 aptを使用して私が古いnumpy(v1.5.1)をインストールしたときに、私は自分自身をインストールしなかった - apt-getしました。もし私が推測しなければならなかったら、私はgfortranと言うだろうが、私はむしろこれを台無しにしたくない。LAPACKをビルドしたコンパイラを確認する

LAPACKの現在のインストールをビルドしたコンパイラはどのようにしてわかりますか?簡単な方法がありますか?おそらくそれを使用して出力を調べるいくつかのFortranコードを実行していますか?

ありがとうございます!

答えて

6

あなたが参照同じINSTALLファイルから、私は推測していた場合、私が知っている2つのだけの自由Fortranコンパイラは、G77とのgfortranとg77のあるよう...

How to check the ABI of blas/lapack/atlas 
----------------------------------------- 

One relatively simple and reliable way to check for the compiler used to build 
a library is to use ldd on the library. If libg2c.so is a dependency, this 
means that g77 has been used. If libgfortran.so is a a dependency, gfortran has 
been used. If both are dependencies, this means both have been used, which is 
almost always a very bad idea. 

は、私はおそらくものgfortranを推測します私が知る限り、開発はかなり死んでいます... gfortran(デフォルトでは)は1つしか追加しないのに対し、g77(デフォルト)はシンボルに2つのアンダースコアを付加しています。これはおそらく、numpyが知っておくべき最も重要なことです...他の微妙な違いがあるかもしれませんが(例えば、numpyが、共通のブロックに格納された情報を取得するためにいくつかの汚れたハッキン​​グを行っている場合)。

+0

ありがとう!ちょうど私が必要なもの。 'lapack'で' ldd'を使うには、 '/ usr/lib /'に 'cd'して '$ ldd liblapack。*'を実行します(私のlapackファイルは 'liblapack.so.3gf'のように見えます)。私の[results](http://pastebin.com/pgSHha9R)は 'gfortran'を指しています。これを見つけて共有してくれてありがとう。 – grisaitis

+0

@caravaggisto問題ありません - 私は助けてうれしいです。これがあなたのために働いた場合は、この回答を受け入れることをお気軽に(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – mgilson

+0

もちろん:)ありがとうございました。 – grisaitis

1

は、私はあなたが$SHARED_OBJECT/usr/lib/atlas-base/liblapack_atlas.so.3gf.0のようなものであり、照明readelf -a /usr/lib/$SHARED_OBJECTを見つけるかもしれませんが(あなたの正確なファイル名が何であるかを見るためにあなたの/usr/libに見てする必要があります)、簡単な方法を知っています。

しかし、あなたはDebianの風味であるUbuntuを使っているので、情報を取得する方法は全く異なります。

  1. は、バイナリパッケージの$ BINARY_PKGにごLAPACK共有オブジェクトがdpkg -l | grep -E '(lapack|atlas)および/またはdpkg -S $SHARED_OBJECTで所属して下さい。
  2. ソースパッケージ$ SOURCE_PKGからバイナリパッケージ$ BINARY_PKGが作成されたことを​​で確認します。出力では、Source:行を探します。
  3. 一時的な作業ディレクトリに変更します。
  4. 問題apt-get source $SOURCE_PKG。 (代替として、apt-get source $BINARY_PKGも同じ効果があります)
  5. 問題lsとLapackのソースディレクトリに気づくでしょう。
  6. Lapackのソースディレクトリに移動します。
  7. ファイルdebian/controlを調べて、該当するBuild-Depends:行に特に注意してください。これは、パッケージを構築するために必要なことを伝えます。
  8. dpkg -s build-essentialは、ディストリビューション内のすべてのパッケージをビルドするためのコンパイラに関する追加情報を提供します(build-essentialパッケージをインストールする必要があります)。

すべてこれはもちろん多くの作業であり、あなたの求める答えが得られる単純な式の性質はありません。それはあなたに答えを探す場所を与えます。がんばろう。

+0

ありがとうございます! 'readelf' [うまくいった](http://pastebin.com/C4YggTfX)を実行し、' ldd'の結果を確認しました。他のステップでは、私のニーズに少し過不足がありますが、共有に感謝します。 – grisaitis

関連する問題