當前位置:首頁 » 編程軟體 » gmp編譯

gmp編譯

發布時間: 2022-06-23 10:03:45

❶ 大數庫 比較 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...

熱點內容
如何在家部署一台伺服器 發布:2025-02-14 06:22:04 瀏覽:433
u盤里文件夾是空的 發布:2025-02-14 06:13:22 瀏覽:803
安卓如何縮放圖片尺寸 發布:2025-02-14 06:06:34 瀏覽:116
六年級簡便演算法題 發布:2025-02-14 05:53:02 瀏覽:8
腳本精靈要root嗎 發布:2025-02-14 05:51:30 瀏覽:212
安卓手機如何錄屏怎麼去掉觸摸顯示 發布:2025-02-14 05:36:23 瀏覽:996
安卓系統新品推薦怎麼關 發布:2025-02-14 05:35:44 瀏覽:888
虛擬存儲器的基礎是 發布:2025-02-14 05:32:24 瀏覽:516
androidstudio出錯 發布:2025-02-14 05:32:14 瀏覽:305
面容id存儲多張臉 發布:2025-02-14 05:31:30 瀏覽:656