Next: , Previous: , Up: Installing GMP   [Index]


2.5 ビルド時における問題点

更新情報はhttps://gmplib.org/で見ることができます。

コンパイル時のリンクオプション

現状のlibtoolは,共有ライブラリをリンクする時にコンパイラオプションを外してしまいます。将来的にはこの制限はなくなる予定ですが,現段階ではスクリプトを書き換えてこの制限をなくし,次のようにconfigure時に指定すればいいでしょう。

./configure CC=gcc-with-my-options
DJGPP (‘*-*-msdosdjgpp*’)

DJGPPに含まれるbash 2.03は‘configure’スクリプトの実行ができません。動作開始時のメッセージだけをconfig.logに書き残して逝ってしまいます。bash 2.04以降を使って下さい。

make all’すると,libgmp.laとリンクしてテストを行う段階で,64MBフルに利用できたとしてもメモリ溢れを起こします。 ‘make libgmp.la’と直接指定してコンパイルし,各サブディレクトリに移動して各テストを実行するようにします。

Version 2.12以前のGNU binutils strip

GNU binutils 2.11以前に含まれるstripは,静的ライブラリlibgmp.alibmp.aに対しては使用しないで下さい。 同じ名前のアーカイブファイル名が重複していると,その全部を削除するのではなく,最後のものだけを削除してしまいます。libgmp.aに3種類のinit.oが入っているケースがそれに当たります。Binutils 2.12以降では正しく削除を実行できます。

共有ライブラリlibgmp.solibmp.soに対してはこのような現象は起きず,どのバージョンのstripを使っても大丈夫です。

makeの文法エラー

SCO OpenServer 5 と IRIX 6.5のいくつかのバージョンでは,ネイティブmakelibgmp.laに対する長い依存指定を処理できません。この症状は,Makefileの最初に登場する下記の記述を“syntax error”(文法エラー)にしてしまいます。

libgmp.la: $(libgmp_la_OBJECTS) $(libgmp_la_DEPENDENCIES)

回避するためにはGNU Makeを利用するか,この行から$(libgmp_la_DEPENDENCIES)を削除します(最初のビルドはこれでクリアしますが,もう一度コンパイルするとlibgmp.laが生成されなくなります)。

MacOS X (‘*-*-darwin*’)

現在のLibtoolは,ネイティブcc(GCCの改良版)を使ってMasOS X上の共有ファイルを生成することしかできず,普通のGCC は使えません。静的ライブラリだけを生成したいのであれば,‘--disable-shared’を使って下さい。

NeXT 3.3以前

古いバージョンのNeXTのシステムコンパイラは廃止され,古いGCCがccの代わりに使われています。このコンパイラはGMPをビルドできないので,新しいGCCをインストールする必要があります(NeXTはrelease 3.3でこの不具合を修正する予定です)。

POWER と PowerPC

GCC 2.7.2 (と 2.6.3)にあったバグのせいで,POWERや PowerPC 上でGMPのコンパイルができませんでした。GCCを使ってビルドしたければ,GCC 2.7.2.1以降のものを入手して下さい。

Sequent Symmetry

システムのアセンブラは深刻なバグがありますので,GNU assemblerを使って下さい。

Solaris 2.6

libtoolでlibgmp.laをビルドする際,sedは“Output line too long”(出力行が長すぎる)というエラーを吐きます。 このせいでメンドクサイ影響が出るわけではありませんが,GNU sedの利用をお勧めします。

Sparc Solaris 2.7 上で gcc 2.95.2を使用する際の‘ABI=32’指定時

GMPの共有ライブラリビルド時に,結合処理でコケます。正確に言うと,ビルドはできますがテストで失敗します。gmp_randinit_lc_2exp_size関数内のデータ再配置が正しく行われないためと思われますが,実際のところは不明です。‘--disable-shared’オプションの利用をお勧めします。