목차

Linux From Scratch - Version 12.1-systemd
Chapter 8. Installing Basic System Software
이전 위로 / 처음으로 다음
GCC-13.2.0 Sed-4.9

8.29. Ncurses-6.4-20230520

Ncurses 패키지에는 터미널에 독립적인 문자 화면 처리를 위한 라이브러리가 포함되어 있습니다.


8.29.1. Ncurses 설치

Ncurses 컴파일을 준비합니다.

./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


configure 옵션 설명

패키지를 컴파일합니다.

make

이 패키지에는 테스트 스위트가 있지만 패키지를 설치한 후에만 실행할 수 있습니다. 테스트는 test/ 디렉터리에 있습니다. 자세한 내용은 해당 디렉터리에 있는 README 파일을 참조하세요.

이 패키지를 설치하면 libncursesw.so.6.4를 덮어씁니다. 라이브러리 파일의 코드와 데이터를 사용하는 셸 프로세스가 충돌할 수 있습니다. DESTDIR에 패키지를 설치하고 설치 명령을 사용하여 라이브러리 파일을 올바르게 바꿉니다(curses.h 헤더도 6.3절 "Ncurses-6.4-20230520"에서 수행한 것과 같이 와이드 문자 ABI가 사용되도록 편집됩니다).

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
sed -e 's/^#if.*XOPEN.*$/#if 1/'  \
    -i dest/usr/include/curses.h
cp -av dest/* /

많은 애플리케이션은 여전히 링커가 와이드 문자 라이브러리가 아닌 Ncurses 라이브러리를 찾을 수 있기를 기대합니다. 이러한 애플리케이션은 심볼릭 링크를 통해 와이드 문자 라이브러리와 연결하도록 속입니다(.so 링크는 항상 와이드 문자 ABI를 사용하도록 curses.h를 편집한 경우에만 안전합니다).

for lib in ncurses from 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

마지막으로, 빌드 시점에 -lcurses를 찾는 이전 애플리케이션이 여전히 빌드 가능하도록 합니다.

ln -sfv libncursesw.so /usr/lib/libcurses.so

원하는 경우 Ncurses 문서를 설치합니다.

cp -v -R doc -T /usr/share/doc/ncurses-6.4-20230520

참고
위의 지침은 소스에서 컴파일하여 설치한 패키지가 런타임에 링크되지 않으므로 와이드 문자가 아닌 Ncurses 라이브러리를 만들지 않습니다. 그러나 와이드 문자가 아닌 Ncurses 라이브러리에 대해 링크하는 알려진 유일한 바이너리 전용 애플리케이션은 버전 5가 필요합니다. 일부 바이너리 전용 애플리케이션 때문에 또는 LSB를 준수하기 위해 이러한 라이브러리가 반드시 필요한 경우 다음 명령을 사용하여 패키지를 다시 빌드하세요.

make distclean
./configure --prefix=/usr         \
            --with-shared         \
            --without-normal      \
            --without-debug       \
            --without-cxx-binding \
            --with-abi-version=5
make sources libs
cp -av lib/lib*.so.5* /usr/lib

8.29.2. Ncurses 패키지 구성

간략한 설명