8.32.1. Installasjon av Ncurses
Forbered Ncurses for kompilering:
./configure --prefix=/usr \
--mandir=/usr/share/man \
--with-shared \
--without-debug \
--without-normal \
--with-cxx-shared \
--enable-pc-files \
--with-pkg-config-libdir=/usr/lib/pkgconfig
Betydningen av de nye
konfigureringsalternativene:
-
--with-shared
-
Dette får Ncurses til å bygge og installere delte C
biblioteker.
-
--without-normal
-
Dette forhindrer at Ncurses bygger og installerer statiske C
biblioteker.
-
--without-debug
-
Dette forhindrer at Ncurses bygger og installerer
feilsøkingsbiblioteker.
-
--with-cxx-shared
-
Dette får Ncurses til å bygge og installere delte C++
bindinger. Den forhindrer også at den bygger og installerer
statiske C++ bindinger.
-
--enable-pc-files
-
Denne bryteren genererer og installerer .pc filer for
pkg-config.
Kompiler pakken:
make
Denne pakken har en testpakke, men den kan bare kjøres etter at
pakken er installert. Testene ligger i test/ mappen. Se README filen i den mappen for ytterligere
detaljer.
Installasjonen av denne pakken vil overskrive libncursesw.so.6.5. Det kan krasje skallprosessen
som bruker kode og data fra bibliotekfilen. Installer pakken med
DESTDIR, og bytt ut bibliotekfilen
riktig med --remove-destination alternativet for
cp (deklarasjonen
curses.h er også redigert for å sikre
ABI med wide-character skal brukes som det vi har gjort i Seksjon 6.3,
«Ncurses-6.5-20250809»):
make DESTDIR=$PWD/dest install
sed -e 's/^#if.*XOPEN.*$/#if 1/' \
-i dest/usr/include/curses.h
cp --remove-destination -av dest/* /
Mange applikasjoner forventer fortsatt at lenkeren skal kunne finne
non-wide-character Ncurses biblioteker. Lure slike applikasjoner
til å koble til biblioteker med wide-character ved hjelp av
symbolkoblinger (merk at .so lenker
er bare trygt med curses.h redigert
for alltid å bruke ABI med wide-character):
for lib in ncurses form panel menu ; do
ln -sfv lib${lib}w.so /usr/lib/lib${lib}.so
ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc
done
Til slutt, sørg for at gamle programmer som ser etter -lcurses ved byggetiden fortsatt er byggbare:
ln -sfv libncursesw.so /usr/lib/libcurses.so
Hvis ønskelig, installer Ncurses dokumentasjonen:
cp -v -R doc -T /usr/share/doc/ncurses-6.5-20250809
Notat
Instruksjonene ovenfor oppretter ikke Ncurses med ikke-brede tegn
biblioteker siden ingen pakke installert ved kompilering fra
kilder ville kobles mot dem under kjøring. Imidlertid den eneste
kjente bare binær applikasjonen som kobler mot
Ncurses-biblioteker med ikke-brede karakterer krever versjon 5.
Hvis du må ha slike biblioteker på grunn av noen bare binær
applikasjon eller for å være kompatibel med LSB, bygg pakken på
nytt med følgende kommandoer:
make distclean
./configure --prefix=/usr \
--with-shared \
--without-normal \
--with-cxx-shared \
--without-debug \
--without-cxx-binding \
--with-abi-version=5
make sources libs
cp -av lib/lib*.so.5* /usr/lib
8.32.2. Bygge Ncurses - x32bit
Rens forrige bygg:
make distclean
Klargjør Ncurses for kompilering:
CC="gcc -mx32" CXX="g++ -mx32" \
./configure --prefix=/usr \
--host=x86_64-pc-linux-gnux32 \
--libdir=/usr/libx32 \
--mandir=/usr/share/man \
--with-shared \
--without-debug \
--without-normal \
--enable-pc-files \
--with-pkg-config-libdir=/usr/libx32/pkgconfig
Kompiler pakken:
make
Installer pakken:
make DESTDIR=$PWD/DESTDIR install
mkdir -p DESTDIR/usr/libx32/pkgconfig
for lib in ncurses form panel menu ; do
rm -vf DESTDIR/usr/libx32/lib${lib}.so
echo "INPUT(-l${lib}w)" > DESTDIR/usr/libx32/lib${lib}.so
ln -svf ${lib}w.pc DESTDIR/usr/libx32/pkgconfig/$lib.pc
done
rm -vf DESTDIR/usr/libx32/libcursesw.so
echo "INPUT(-lncursesw)" > DESTDIR/usr/libx32/libcursesw.so
ln -sfv libncurses.so DESTDIR/usr/libx32/libcurses.so
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
rm -rf DESTDIR