8.21. GMP-6.3.0

GMP pakken inneholder matematikkbiblioteker. Disse har nyttige funksjoner for vilkårlig presisjonsaritmetikk.

Omtrentlig byggetid: 0.3 SBU
Nødvendig diskplass: 54 MB

8.21.1. Installasjon av GMP

[Notat]

Notat

Hvis du bygger for 32-bit x86, men du har en CPU som er i stand til å kjøre 64-bits kode og du har spesifisert CFLAGS i miljøet vil konfigureringsskriptet forsøke å konfigurere for 64-biter og mislykkes. Unngå dette ved å påkalle configure kommandoen nedenfor med

ABI=32 ./configure ...
[Notat]

Notat

Standardinnstillingene til GMP produserer biblioteker optimalisert for vertsprosessoren. Hvis det er ønskelig med biblioteker egnet for prosessorer mindre kapable enn vertens CPU, kan generiske biblioteker bli opprettet ved å legge til --host=none-linux-gnu alternativet til configure kommandoen.

Først må du justere kompatibiliteten for gcc-15 og nyere:

sed -i '/long long t1;/,+1s/()/(...)/' configure

Forbered GMP for kompilering:

./configure --prefix=/usr    \
            --enable-cxx     \
            --disable-static \
            --docdir=/usr/share/doc/gmp-6.3.0

Betydningen av de nye konfigureringsalternativene:

--enable-cxx

Denne parameteren aktiverer C++ støtte

--docdir=/usr/share/doc/gmp-6.3.0

Denne variabelen spesifiserer riktig sted for dokumentasjon.

Kompiler pakken og generer HTML dokumentasjonen:

make
make html
[Viktig]

Viktig

Testpakken for GMP i denne delen anses som kritisk. Ikke hopp over det under noen omstendigheter.

Test resultatene:

make check 2>&1 | tee gmp-check-log
[Obs]

Obs

Koden i gmp er svært optimalisert for prosessoren hvor den er bygget. Noen ganger vil koden som oppdager prosessoren feilidentifisere systemets evner og det vil være feil i testene eller andre applikasjoner som bruker gmp bibliotekene med meldingen Illegal instruction. I dette tilfellet bør gmp rekonfigureres med alternativet --host=none-linux-gnu og gjenoppbygges.

Sørg for at minst 199 tester i testpakken består. Sjekk resultatene ved å gi følgende kommando:

awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log

Installer pakken og dens dokumentasjon:

make install
make install-html

8.21.2. Installasjon av GMP - x32-bit

Rens forrige bygg:

make distclean

Generiske biblioteker kan opprettes ved å kjøre følgende:

cp -v configfsf.guess config.guess
cp -v configfsf.sub   config.sub

Klargjør GMP for kompilering:

ABI="x32" \
CFLAGS="-mx32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=x86-64" \
CXXFLAGS="$CFLAGS" \
PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \
./configure                       \
    --host=x86_64-pc-linux-gnux32 \
    --prefix=/usr                 \
    --disable-static              \
    --enable-cxx                  \
    --libdir=/usr/libx32          \
    --includedir=/usr/include/mx32/gmp

Kompiler pakken:

sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile
make
[Viktig]

Viktig

Testpakken for GMP i denne delen anses som kritisk. Ikke hopp over den under noen omstendigheter.

Test resultatene:

make check 2>&1 | tee gmp-check-log

Sørg for at alle 197 testene i testpakken bestod. Sjekk resultatene ved å kjøre følgende kommando:

awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log

Installer pakken:

make DESTDIR=$PWD/DESTDIR install
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
cp -Rv DESTDIR/usr/include/mx32/* /usr/include/mx32/
rm -rf DESTDIR

8.21.3. Innhold i GMP

Installerte biblioteker: libgmp.so og libgmpxx.so
Installert mappe: /usr/share/doc/gmp-6.3.0

Korte beskrivelser

libgmp

Inneholder matematiske presisjonsfunksjoner

libgmpxx

Inneholder C++ matematiske presisjonsfunksjoner