8.29.1. Installation of Ncurses
Prepare Ncurses for compilation:
./configure --prefix=/usr \
--mandir=/usr/share/man \
--with-shared \
--without-debug \
--without-normal \
--with-cxx-shared \
--enable-pc-files \
--enable-widec \
--with-pkg-config-libdir=/usr/lib/pkgconfig
The meaning of the new configure options:
-
--with-shared
-
This makes Ncurses build and install shared C libraries.
-
--without-normal
-
This prevents Ncurses building and installing static C
libraries.
-
--without-debug
-
This prevents Ncurses building and installing debug
libraries.
-
--with-cxx-shared
-
This makes Ncurses build and install shared C++ bindings. It
also prevents it building and installing static C++ bindings.
-
--enable-pc-files
-
This switch generates and installs .pc files for pkg-config.
-
--enable-widec
-
This switch causes wide-character libraries (e.g.,
libncursesw.so.6.4
) to be built
instead of normal ones (e.g., libncurses.so.6.4
). These wide-character
libraries are usable in both multibyte and traditional 8-bit
locales, while normal libraries work properly only in 8-bit
locales. Wide-character and normal libraries are
source-compatible, but not binary-compatible.
Compile the package:
make
This package has a test suite, but it can only be run after the
package has been installed. The tests reside in the test/
directory. See the README
file in that directory for further
details.
The installation of this package will overwrite libncursesw.so.6.4
in-place. It may crash the
shell process which is using code and data from the library file.
Install the package with DESTDIR
, and
replace the library file correctly using install command:
make DESTDIR=$PWD/dest install
install -vm755 dest/usr/lib/libncursesw.so.6.4 /usr/lib
rm -v dest/usr/lib/libncursesw.so.6.4
cp -av dest/* /
Many applications still expect the linker to be able to find
non-wide-character Ncurses libraries. Trick such applications into
linking with wide-character libraries by means of symlinks and
linker scripts:
for lib in ncurses form panel menu ; do
rm -vf /usr/lib/lib${lib}.so
echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so
ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc
done
Finally, make sure that old applications that look for -lcurses
at build time are still buildable:
rm -vf /usr/lib/libcursesw.so
echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
ln -sfv libncurses.so /usr/lib/libcurses.so
If desired, install the Ncurses documentation:
mkdir -pv /usr/share/doc/ncurses-6.4
cp -v -R doc/* /usr/share/doc/ncurses-6.4
Note
The instructions above don't create non-wide-character Ncurses
libraries since no package installed by compiling from sources
would link against them at runtime. However, the only known
binary-only applications that link against non-wide-character
Ncurses libraries require version 5. If you must have such
libraries because of some binary-only application or to be
compliant with LSB, build the package again with the following
commands:
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.29.2. Building Ncurses - 32bit
Clean previous build:
make distclean
Prepare Ncurses for compilation:
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 \
--enable-widec \
--with-pkg-config-libdir=/usr/lib32/pkgconfig
Compile the package:
make
Install the package:
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
8.29.3. Building Ncurses - x32bit
Clean previous build:
make distclean
Prepare Ncurses for compilation:
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 \
--enable-widec \
--with-pkg-config-libdir=/usr/libx32/pkgconfig
Compile the package:
make
Install the package:
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