GMP pakken inneholder matematikkbiblioteker. Disse har nyttige funksjoner for vilkårlig presisjonsaritmetikk.
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 ...
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
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
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
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="32" \
CFLAGS="-m32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=i686" \
CXXFLAGS="$CFLAGS" \
PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
./configure --prefix=/usr \
--host=i686-pc-linux-gnu \
--disable-static \
--enable-cxx \
--libdir=/usr/lib32 \
--includedir=/usr/include/m32/gmp
Betydningen av de nye konfigurasjonsalternativene:
--includedir=/usr/include/m32/gmp
Noen definisjoner i gmp.h er forskjellige for hver arch, men har samme navn. Derfor må overskriftene være atskilt fra hverandre.
Kompiler pakken:
sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile make
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 199 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/lib32/* /usr/lib32 cp -Rv DESTDIR/usr/include/m32/* /usr/include/m32/ rm -rf DESTDIR
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 --prefix=/usr \
--host=x86_64-pc-linux-gnux32 \
--disable-static \
--enable-cxx \
--libdir=/usr/libx32 \
--includedir=/usr/include/mx32/gmp
Kompiler pakken:
sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile make
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 199 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