Next: Performance optimization, Previous: Notes for Particular Systems, Up: Installing GMP [Index]
更新情報はhttps://gmplib.org/で見ることができます。
現状のlibtoolは,共有ライブラリをリンクする時にコンパイラオプションを外してしまいます。将来的にはこの制限はなくなる予定ですが,現段階ではスクリプトを書き換えてこの制限をなくし,次のようにconfigure時に指定すればいいでしょう。
./configure CC=gcc-with-my-options
DJGPPに含まれるbash
2.03は‘configure’スクリプトの実行ができません。動作開始時のメッセージだけをconfig.logに書き残して逝ってしまいます。bash
2.04以降を使って下さい。
‘make all’すると,libgmp.laとリンクしてテストを行う段階で,64MBフルに利用できたとしてもメモリ溢れを起こします。 ‘make libgmp.la’と直接指定してコンパイルし,各サブディレクトリに移動して各テストを実行するようにします。
strip
GNU binutils 2.11以前に含まれるstrip
は,静的ライブラリlibgmp.a と libmp.aに対しては使用しないで下さい。 同じ名前のアーカイブファイル名が重複していると,その全部を削除するのではなく,最後のものだけを削除してしまいます。libgmp.aに3種類のinit.oが入っているケースがそれに当たります。Binutils 2.12以降では正しく削除を実行できます。
共有ライブラリlibgmp.so や libmp.soに対してはこのような現象は起きず,どのバージョンのstrip
を使っても大丈夫です。
make
の文法エラーSCO OpenServer 5 と IRIX 6.5のいくつかのバージョンでは,ネイティブmake
はlibgmp.laに対する長い依存指定を処理できません。この症状は,Makefileの最初に登場する下記の記述を“syntax error”(文法エラー)にしてしまいます。
libgmp.la: $(libgmp_la_OBJECTS) $(libgmp_la_DEPENDENCIES)
回避するためにはGNU Makeを利用するか,この行から$(libgmp_la_DEPENDENCIES)
を削除します(最初のビルドはこれでクリアしますが,もう一度コンパイルするとlibgmp.laが生成されなくなります)。
現在のLibtoolは,ネイティブcc
(GCCの改良版)を使ってMasOS X上の共有ファイルを生成することしかできず,普通のGCC は使えません。静的ライブラリだけを生成したいのであれば,‘--disable-shared’を使って下さい。
古いバージョンのNeXTのシステムコンパイラは廃止され,古いGCCがccの代わりに使われています。このコンパイラはGMPをビルドできないので,新しいGCCをインストールする必要があります(NeXTはrelease 3.3でこの不具合を修正する予定です)。
GCC 2.7.2 (と 2.6.3)にあったバグのせいで,POWERや PowerPC 上でGMPのコンパイルができませんでした。GCCを使ってビルドしたければ,GCC 2.7.2.1以降のものを入手して下さい。
システムのアセンブラは深刻なバグがありますので,GNU assemblerを使って下さい。
libtoolでlibgmp.laをビルドする際,sed
は“Output line too long”(出力行が長すぎる)というエラーを吐きます。
このせいでメンドクサイ影響が出るわけではありませんが,GNU sed
の利用をお勧めします。
GMPの共有ライブラリビルド時に,結合処理でコケます。正確に言うと,ビルドはできますがテストで失敗します。gmp_randinit_lc_2exp_size
関数内のデータ再配置が正しく行われないためと思われますが,実際のところは不明です。‘--disable-shared’オプションの利用をお勧めします。