Na stronie projektu biblioteka jest tylko w postaci źródłowej https://gmplib.org/download/gmp/gmp-6.2.1.tar.lz
Trzeba to ściągnąć, rozpakować a następnie skompilować. Konfigurator jaki został użyty to Autotools
więc trzeba uruchomić skrypt ./configure
, który wygeneruje plik Makefile
oraz inne pliki, których szablony są w plikach o rozszerzeniu *.in
. Jest tam gmp-h.in
, z którego powstanie właśnie gmp.h
. Poniżej różnica między tymi dwoma plikami
/tmp/gmp-6.2.1 λ ./configure --enable-cxx
...
/tmp/gmp-6.2.1 λ diff gmp-h.in gmp.h
41,44c41,44
< #define __GMP_HAVE_HOST_CPU_FAMILY_power @HAVE_HOST_CPU_FAMILY_power@
< #define __GMP_HAVE_HOST_CPU_FAMILY_powerpc @HAVE_HOST_CPU_FAMILY_powerpc@
< #define GMP_LIMB_BITS @GMP_LIMB_BITS@
< #define GMP_NAIL_BITS @GMP_NAIL_BITS@
---
> #define __GMP_HAVE_HOST_CPU_FAMILY_power 0
> #define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0
> #define GMP_LIMB_BITS 64
> #define GMP_NAIL_BITS 0
60,61c60,61
< @DEFN_LONG_LONG_LIMB@
< #define __GMP_LIBGMP_DLL @LIBGMP_DLL@
---
> #define _LONG_LONG_LIMB 1
> #define __GMP_LIBGMP_DLL 0
2326,2327c2326,2327
< #define __GMP_CC "@CC@"
< #define __GMP_CFLAGS "@CFLAGS@"
---
> #define __GMP_CC "gcc"
> #define __GMP_CFLAGS "-O2 -pedantic -fomit-frame-pointer -m64 -mtune=k8 -march=k8"
Żeby sobie zaoszczędzić tego bólu użyj MSYS2 o czym wspomniał @Marius.Maximus. W konsoli np. MSYS2 UCRT64 Shell
wystarczy uruchomić pacman -S mingw-w64-ucrt-x86_64-gmp
i w katalogu /ucrt64/include
powinien się znaleźć plik gmp.h
. Oczywiście IDE DevC++
trzeba przestawić na inny toolchain
, na ten pochodzący z MSYS2, czyli ustawić ścieżki do gcc
, cpp
, itp. na C:/msys64/ucrt64/bin
.
Zaleta jest taka, że masz najnowszy gcc-13.1.0
, a w DevC++
masz staroć gcc-9.2.0
. Przy pomocy programu pacman
możesz w łatwy i szybki sposób instalować inne popularne biblioteki np. SDL2, SFML, glfw3, Vulkak, fftw3, Qt, wxWidgets, itp. Bibliotek jest setki a może i tysiące.