现在的位置: 首页 > 综合 > 正文

ubuntu10.4下安装和使用GMP高精度数学库

2013年10月22日 ⁄ 综合 ⁄ 共 1769字 ⁄ 字号 评论关闭

1、安装:
下载gmp-5.0.1的源代码,解压至gmp-5.0.1目录。
su切换至超级用户权限。
./configure --prefix=/usr  --enable-cxx

提示:
checking for suitable m4… configure: error:
 No usable m4 in $PATH or /usr/5bin (see config.log for reasons).
根据提示查看config.log日志文件,发现文件太大,何处找原因呢?
没有办法,直接google搜索上面的英文提示。
居然马上就找到了资料解决这个问题,原来是缺少m4软件包。
查了一下m4是一个通用的宏处理器,由Brian Kernighan 和Dennis Ritchie设计。
apt-get install build-essential m4
安装完毕,其中的build-essential是ubuntu下用来解决安装g++/gcc编译环境依赖关系的软件包。

执行

./configure --prefix=/usr  --enable-cxx
make
make check
make install
开始编译,安装gmp数学库。
root@luoxiongwei-desktop:~# find / -name libgmp*
/usr/lib/ssl/engines/libgmp.so
/usr/lib/libgmpxx.so
/usr/lib/libgmp.la
/usr/lib/libgmpxx.a
/usr/lib/libgmpxx.so.4
/usr/lib/libgmp.so.10.0.1
/usr/lib/libgmpxx.la
/usr/lib/libgmp.a
/usr/lib/libgmp.so.3.5.2
/usr/lib/libgmp.so.10
/usr/lib/libgmp.so
/usr/lib/libgmp.so.3
/usr/lib/libgmpxx.so.4.2.1
应该是安装成功了。
--------------------------------------------------------------------------------
2、使用:
我也是新手,在这里小小尝试一下。

#include <iostream>
#include <gmp.h>
#include <cstdlib>
#include <cstdio>
#include <cstring>

using namespace std;

int main(int argc,char **argv)
{

mpz_t begin, m1, m2;
    int count;
 
    //按照10进制初始化begin
    mpz_init_set_str(begin, "170141183460469231731687303715884105728", 10);
 
    count = (argc==1)?10:atoi(argv[1]);
 
 
    while(count--) {
        mpz_nextprime(begin, begin);
        gmp_printf("%Zd\n", begin);
    }
 
    mpz_clear(begin);
return 0;
}

g++ -o main testgmp.cpp -lgmp
luoxiongwei@luoxiongwei-desktop:~$ ./main
170141183460469231731687303715884105757
170141183460469231731687303715884105773
170141183460469231731687303715884105793
170141183460469231731687303715884105829
170141183460469231731687303715884105851
170141183460469231731687303715884105979
170141183460469231731687303715884106001
170141183460469231731687303715884106031
170141183460469231731687303715884106123
170141183460469231731687303715884106207

具体的参考文档请参见官网:http://gmplib.org/

抱歉!评论已关闭.