gmp編譯
❶ 大數庫 比較 GMP MPIR MPFR MPC
GMP 是GNU組織的主力庫,也推廣捆綁到多門語言、各種linux上。
MPFP、MPIR都是基於GMP上分別對浮點和整型的進一步專門化的庫。
MPC是算「復數」的庫,並非一般大數。
一般的大數運算,用GMP足夠了。GMP支持win下的mingw編譯。
但如果要在vc下用就要改代碼,或者找些別人改過的補丁。
vc本身也可以操作.net框架的decimal大數模塊。
❷ 安裝gmp後怎樣編譯cpp文件
gmp安裝及使用摘要
GNU Multiple Precision Arithmetic Library
首先,去libgmp官網下載最新的gmp包。(我下的是gmp-5.1.0)
然後gmp-5.1.0.tar.bz2。使用命令
tar -jvxf gmp-5.1.0.tar.bz2
進入gmp-5.1.0文件夾
cd gmp-5.1.0
接下來比較關鍵,在使用configure的時候要加上 --enable-cxx命令,否則不能使用c++庫gmpxx.h(今年寒假的時候沒加這個命令也可以,但現在貌似不行了- -)
./configure --enable-cxx
然後
make
make check
最後
sudo make install
就安裝完成了。
可以試著編寫一個樣常式序:
#include<gmpxx.h>
using namespace std;
int main()
{
mpz_t a, b, c, d;
mpz_init(a);
mpz_init(b);
mpz_init(c);
mpz_init(d);
//計算2的1000次方
mpz_init_set_ui(a, 2);
mpz_pow_ui(c, a, 1000);
gmp_printf("c = %Zd\n", c);
//計算12345678900987654321*98765432100123456789
mpz_init_set_str(b, "12345678900987654321", 10);//10進制
mpz_init_set_str(c, "98765432100123456789", 10);
mpz_mul(d, b, c);
gmp_printf("d = %Zd\n", d);
mpz_clear(a);
mpz_clear(b);
mpz_clear(c);
mpz_clear(d);
return 0;
}
以上程序貌似是C的,編譯時使用:
gcc name.c -o name.o -lgmp
對於C++,編碼會方便一些:
#include<iostream>
#include<gmpxx.h>
using namespace std;
int main()
{
mpz_class a;
//計算2的1000次方,似乎C++就沒有數學函數支持了?
a = 1;
for(int i = 0; i < 1000; i++)
a *= 2;
cout<<"2^1000 = "<<a<<endl;
//計算-12345*9876543210123456789
mpz_class b, c;
b = -12345;
c = "98765432100123456789";
cout<<"b * c = "<<b * c<<endl;
return 0;
}
編譯用:
g++ name.cpp -o name.o -lgmpxx -lgmp
❸ Linux(Ubuntu)自帶了gcc編譯器,我還需要裝gmp和mpfr嗎怎麼辦,是不是需要重裝gcc
gcc肯定不用重裝,你看下有沒裝,沒裝裝上gmp好mpfr就好了,看的方法是命令:
rpm -q gm
❹ arm-linux-gcc編譯openssl、pbc、gmp庫問題
你用的是什麼環境?要麼就是缺少庫,要麼就是缺少資源依懶,都是這些問題!
❺ vs2017使用gmp類庫時輸入輸出符號無法解析外部符號
我在vs2008環境下面遇到了這個問題總算自己解決了如果選擇的是win32而非x64配置,對應的庫目錄一定要設置到x86而非x64在win32配置下使用x64 directx 庫就會出現這種情況解決方法:假設directx目錄為 C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\則對於win32配置項目->屬性->C/C++->常規->附加包含目錄 添加 C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include項目->屬性->鏈接器->常規->附加庫目錄 添加 C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86然後選擇全部重新編譯我就是這樣解決了這個問題
❻ gmp如何編譯安裝php已經裝好了,想增加這個模塊。
cd gmpphpize./configuremake && make install
❼ 如何在windows下編譯GMP軟體包為。lib或者dll的
56
4168659+
❽ 如何在windows下編譯GMP軟體包
1、下載GMP源代碼,展開到d:/gmp
http://gmplib.org/#DOWNLOAD
2、下載MinGW windows下的GNU C編譯器
http://sourceforge.net/project/showfiles.php?group_id=2435
中的AutoMated MinGW Installer下載完後執行,選擇下載並安裝
安裝選項選擇第一,二和最後共三個組件,安裝在d:/minGW
3、 http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe?modtime=1079444447&big_mirror=1
下載MSYS MinGW的輔助環境
安裝到d:/msys,安裝時有兩個提示,第一個提示輸入Y, 第二個提示輸入MinGW安裝路徑d:/MinGW
完成後桌面出現msys快捷方式
4、進入d:/msys/1.0/etc編輯fstab文件
加入行
d:/gmp /gmp
5、點擊msys進入環境
cd /gmp進入gmp虛擬路徑
依次執行(每個都會執行很長時間)
./configure
make
make install
則編譯出靜態包
如果執行
./configure --disable-static --enable-shared
make
make install
則編譯出dll
❾ windows下如何用cygwin 編譯gmp
cygwin可以編譯生成windows下供調用的dll,包括vc可識別的lib。
Cygwin-GCC : Cygwin自帶了一個GCC,用於把C/C++-Source編譯成Cygwin平台下的EXE/DLL (使用Cygwin必須用其自帶的GCC, 因為內部會生成一些針對於平台的特定的初始化代碼,如果用其餘版本的GCC則很有可能導致程序不能正常運行.)
Cygwin-GCC : Cygwin自帶了一個GCC,用於把C/C++-Source編譯成Cygwin平台下的EXE/DLL (使用Cygwin必須用其自帶的GCC, 因為內部會生成一些針對於平台的特定的初始化代碼,如果用其餘版本的GCC則很有可能導致程序不能正常運行.)
說明 - Cygwin-GCC :
在Cygwin-Shell中可直接使用gcc .如下 :
gcc -shared xxx.c -o xxx.dll //編譯成DLL, 注意,Cygwin-GCC默認導出所有的Function.
gcc -c xxx.c -o xxx.o //編譯成OBJ
gcc xxx.c -o xxx.exe //編譯成EXE
ar r xxx.lib xxx1.o xxx2.o //打包多個obj成一個Lib (非連接)
gcc xxx.c ./L aaa.dll -o xxx.exe //引用外部DLL生成EXE
gcc xxx.c yyy.c -o zzz.exe //連接多個C文件,生成EXE.
gcc -I"/bin/include"-c xxx.c -o xxx.o //引用/bin/include目錄下頭文件,生成OBJ
gcc -L"dll.a" xxx.c -o xxx.exe //連接dll.a,生成EXE
如果想知道編譯時具體的信息,可以使用--verbose這個編譯選項,對於了解GCC的工作是很有幫助的.
額外的,也可以寫自己的導出Lib文件,以方便其餘程序引用DLL (如Cobol2002編譯器就不支持直接引用DLL, 這個時候可以寫一個Def,並導出Lib文件,便於Cobol2002使用)
具體方法如下:
1. 編譯生成DLL :
如: gcc -shared MyTest.c -o MyTest.dll, 生成MyTest.dll.
2. 寫一個DEF文件 (這里是MyTest.def),簡單的格式大致如下:
LIBRARY MyTest //這里的MyTest對應於MyTest.dll
EXPORTS
AllocMemory @1 //導出的第一個function : 對應於MyTest.dll裡面的AllocMemory(...), 注意,參數可不用寫
ReadMemory @2 //導出的第二個function : 對應於MyTest.dll裡面的ReadMemory-Function.
//注意:function可以不用全部導出,可以只選擇你需要的Function.
3. 用LIB工具(VC6有提供)生成LIB文件 (這里是MyTest.lib) :
lib /def:MyTest.def //默認生成的名稱為MyTest.lib.
4. 到此生成完畢,連接的時候只需要引用MyTest.lib即可,但要注意XXX.exe 和MyTest.dll要放在同一目錄下.
可以用 gcc --help 查看具體的命令 etc...