8.31.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 install
kommandoen (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-20250531»):
make DESTDIR=$PWD/dest install
install -vm755 dest/usr/lib/libncursesw.so.6.5 /usr/lib
rm -v dest/usr/lib/libncursesw.so.6.5
sed -e 's/^#if.*XOPEN.*$/#if 1/' \
-i dest/usr/include/curses.h
cp -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-20250531
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.31.2. Bygge Ncurses - 32bit
Rens forrige bygg:
make distclean
Klargjør Ncurses for kompilering:
CC="gcc -m32" CXX="g++ -m32" \
./configure --prefix=/usr \
--host=i686-pc-linux-gnu \
--libdir=/usr/lib32 \
--mandir=/usr/share/man \
--with-shared \
--without-debug \
--without-normal \
--with-cxx-shared \
--enable-pc-files \
--with-pkg-config-libdir=/usr/lib32/pkgconfig
Kompiler pakken:
make
Installer pakken:
make DESTDIR=$PWD/DESTDIR install
mkdir -p DESTDIR/usr/lib32/pkgconfig
for lib in ncurses form panel menu ; do
rm -vf DESTDIR/usr/lib32/lib${lib}.so
echo "INPUT(-l${lib}w)" > DESTDIR/usr/lib32/lib${lib}.so
ln -svf ${lib}w.pc DESTDIR/usr/lib32/pkgconfig/$lib.pc
done
rm -vf DESTDIR/usr/lib32/libcursesw.so
echo "INPUT(-lncursesw)" > DESTDIR/usr/lib32/libcursesw.so
ln -sfv libncurses.so DESTDIR/usr/lib32/libcurses.so
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
rm -rf DESTDIR