3

(Python の数値ライブラリ)の最新バージョンをインストールしたいのですがnumpy、そのバージョン (v1.6.1) はまだUbuntu Oneiric リポジトリにありません。手動でインストールしようとしたとき、ビルドしたのと同じコンパイラ(で使用される fortran ライブラリ)でビルドする必要があるINSTALLファイルを読み込みました。残念ながら、それがどのコンパイラかはわかりません。私は自分でインストールしませんでした-以前のバージョン(v1.5.1)を. 私が推測しなければならないとしたら、私は言うだろうが、私はむしろこれを台無しにしたくない.numpyLAPACKnumpyLAPACKapt-getnumpyaptgfortran

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

ありがとう!

4

2 に答える 2

6

参照した同じINSTALLファイルから...

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.

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

于 2012-04-25T04:29:41.733 に答える
2

簡単な方法はわかりませんがreadelf -a /usr/lib/$SHARED_OBJECT、どこに$SHARED_OBJECTあるのかがわかるかもしれません(正確なファイル名を確認するには/usr/lib/atlas-base/liblapack_atlas.so.3gf.0、あなたを調べる必要があります)。/usr/lib

ただし、Debian のフレーバーである Ubuntu を使用しているため、情報を取得する別のまったく異なる方法があります。

  1. Lapack 共有オブジェクトがdpkg -l | grep -E '(lapack|atlas)および/またはによって属するバイナリ パッケージ $BINARY_PKG を調べますdpkg -S $SHARED_OBJECT
  2. バイナリ パッケージ $BINARY_PKG がどのソース パッケージ $SOURCE_PKG からビルドされたかを調べますdpkg -s $BINARY_PACKAGE。出力で、行を探しますSource:
  3. 一時作業ディレクトリに移動します。
  4. 問題apt-get source $SOURCE_PKG。(または、apt-get source $BINARY_PKG同じ効果があります。)
  5. lsLapack ソース ディレクトリを発行して通知します。
  6. Lapack ソース ディレクトリに移動します。
  7. 関連する行debian/controlに特に注意して、ファイルを調べます。Build-Depends:これにより、パッケージをビルドするために必要なものがわかります。
  8. 問題dpkg -s build-essential、ディストリビューション内のすべてのパッケージをビルドするために使用できるコンパイラに関する追加情報を提供します (build-essential最初にパッケージをインストールする必要がある場合があります)。

もちろん、これはすべて大変な作業であり、求めている答えを与えるだけの単純な式の性質を持っているわけではありません。しかし、それは答えを探す場所を与えてくれます。幸運を。

于 2012-04-25T03:31:46.643 に答える