タグ「gmp」が付けられているエントリー

UbuntuでPBC Libraryを動かす方法

| UbuntuでPBC Libraryを動かす方法

Linuxでやれば簡単なのに!(挨拶)

  1. おもむろに,VMware Playerをダウンロードして,インストールする.
  2. 適当なUbuntuのVMware用仮想マシンを入手する.
  3. 仮想マシンのUbuntuを起動させる.
  4. 適当に,apt-get updateやら,apt-get upgradeやらをやる.
  5. GMPを入れるために,以下のコマンドを打つ.
    $ sudo apt-get install libgmp3-dev
  6. PBC Libraryをダウンロードする.
    $ wget http://crypto.stanford.edu/pbc/files/pbc-0.4.18.tar.gz
  7. 余裕で解凍する.
    $ tar zxvf pbc-0.4.18.tar.gz
  8. ディレクトリに潜って,例のコマンドを放つ
    $ ./cofigure
    $ make
    $ sudo make install
  9. prefixを付けないと/usr/localに入れられるので,コンパイルは以下のように.
    $ gcc -o foo foo.c -I /usr/local/include/pbc -L /usr/local/lib
    -Wl,-rpath /usr/local/lib -l pbc

ね.簡単でしょ?

関連:
Visual Studio 2008でGMPを使う方法 - 4403 is written

Linuxでやれば簡単なのに!(挨拶)

Visual Studio 2008でGMPを使う方法を書いておく.備忘録.環境はWindows XP Pro SP3に,Visual Studio 2008 Proです.基本方針はこれを参考にしてます.手順内に出てくるリンク切れの参考サイトはこっち

  1. なにはなくとも,GMP本体をダウンロードする.2009年4月28日時点では4.3.0が最新のようだが,ビルドに必要なファイルが4.2.4を前提にしているらしいので,4.2.4をダウンロード(直リン注意!)する.なお,4.3.0に4.2.4用のビルドファイルを適用してみたが,ダメだった.どこをどう直せばいいのか,皆目見当もつかないくらいにエラーが出たので,今後の課題に.
  2. ダウンロードしたgmp-4.2.4.tar.gzを展開する.ここでは,c:\gmpとする.
  3. このサイトで提供しているgmp-4.2.4.vc9.zipをダウンロードして,解凍する.解凍したファイルをc:\gmpに上書きする.
  4. C:\gmp\build.vc9\yasm.rulesをC:\Program Files\Microsoft Visual Studio 9\VC\VCProjectDefaultsにコピーする.
  5. YASMから,適切なバイナリ(例えば,yasm-0.8.0-win32.exe)をダウンロードし,yasm.exeにリネームして,C:\Program Files\Microsoft Visual Studio 9\VC\binにコピーする.
  6. C:\gmp\build.vc9\gmp.slnを開くと,エラーが4回くらい出るので,無視します.これは,異なるプラットフォームだからだそうですが,Core2でコンパイルしたいなぁ・・・.何故かエラーになる.どうやるんだろう?OSが64ビットじゃないから?
  7. gen-bases, gen-fac_ui, gen-fib, gen-psqrの4つをビルドしまくる.
  8. dll_gmp_p4とlib_gmp_p4をビルドる.
  9. lib_gmpxxをビルドる.
  10. c:\gmp\build.vc9\dll\Win32\(Debug|Release)\にdllファイルが,c:\gmp\build.vc9\lib\Win32\(Debug|Release)\にlibファイルができます.
  11. c:\gmpにあるヘッダファイルをC:\Program Files\Microsoft Visual Studio 9\VC\includeに,ビルドされたlibファイルをC:\Program Files\Microsoft Visual Studio 9\VC\libにコピー.

これでok.続いて,GMPを用いたコードをテストします.以下のコードをコンパイルすることを考えましょう.

#include<iostream>
#include<gmpxx.h>
using namespace std;

mpz_class factorial(int val){
    mpz_class result = 1;
    for(int i=1; i<=val; i++) result *= i;
    return result;
}

int main(void){
    mpz_class result = factorial(300);
    cout << result.get_str() << endl;
    return 0;
}

Windows 環境下での GMP の利用法

結果は,こんな感じ.

090428_gmp01.png

あーさむ.ただし,何故かコンパイル時にエラーが出ることがある.その場合は,静的リンクを設定してみて下さい.

関連:
Windows 環境下での GMP の利用法
A Native GMP Port Using Microsoft Visual Studio

プロフィール

e-m@il @ddress