양쪽 이전 판 이전 판 다음 판 | 이전 판 |
linuxfromscratch:12.1:042-ncurses-6.4-20230520 [2024/05/27 12:25] – 바깥 편집 127.0.0.1 | linuxfromscratch:12.1:042-ncurses-6.4-20230520 [2024/06/14 22:50] (현재) – baecy |
---|
^ Linux From Scratch - Version 12.1-systemd ^^^ | ^ Linux From Scratch - Version 12.1-systemd ^^^ |
^ Chapter 6. Cross Compiling Temporary Tools ^^^ | ^ Chapter 6. Cross Compiling Temporary Tools ^^^ |
|[[.:041-m4-1.4.19|이전]] | 위로 / 처음으로 | [[.:043-bash-5.2.21|다음]]| | |[[.:041-m4-1.4.19|이전]] | [[.:06-cross_compiling_temporary_tools|위로]] / [[.:12.1|처음으로]] | [[.:043-bash-5.2.21|다음]]| |
| |
|M4-1.4.19 | Bash-5.2.21| | |M4-1.4.19 | Bash-5.2.21| |
------ | ------ |
| |
====== 6.3. Ncurses-6.4-20230520 ====== | ===== 6.3. Ncurses-6.4-20230520 ===== |
Ncurses 패키지에는 터미널에 독립적인 문자 화면 처리를 위한 라이브러리가 포함되어 있습니다. | |
| |
**대략적인 빌드 시간:** 0.3 SBU \\ | Ncurses 패키지에는 터미널 독립적인 문자 화면 처리를 위한 라이브러리가 포함되어 있습니다. |
**필요한 디스크 공간:** 51MB | |
| * **빌드 시간:** 0.3 SBU |
| * **디스크 공간:** 51MB |
| |
------ | ------ |
| |
===== 6.3.1. Ncurses 설치 ===== | ==== 6.3.1. Ncurses 설치 ==== |
먼저 구성하는 동안 gawk를 먼저 찾도록 해야합니다. | |
<code lang=bash> | 우선 설정하는 동안 **gawk**를 먼저 찾도록 해야합니다. |
| |
| <code bash> |
sed -i s/mawk// configure | sed -i s/mawk// configure |
</code> | </code> |
그런 다음 다음 명령을 실행하여 빌드 호스트에서 "tic" 프로그램을 먼저 빌드합니다. | |
<code lang=bash> | 다음 명령을 실행하여 빌드 호스트에서 "tic" 프로그램을 먼저 빌드합니다. |
| |
| <code bash> |
mkdir build | mkdir build |
pushd build | pushd build |
popd | popd |
</code> | </code> |
컴파일을 위해 Ncurses를 준비합니다. | |
<code lang=bash> | Ncurses 컴파일을 준비합니다. |
./configure --prefix=/usr \ | |
--host=$LFS_TGT \ | <code bash> |
--build=$(./config.guess) \ | ./configure --prefix=/usr \ |
--mandir=/usr/share/man \ | --host=$LFS_TGT \ |
| --build=$(./config.guess) \ |
| --mandir=/usr/share/man \ |
--with-manpage-format=normal \ | --with-manpage-format=normal \ |
--with-shared \ | --with-shared \ |
--without-normal \ | --without-normal \ |
--with-cxx-shared \ | --with-cxx-shared \ |
--without-debug \ | --without-debug \ |
--without-ada \ | --without-ada \ |
--disable-stripping \ | --disable-stripping \ |
--enable-widec | --enable-widec |
</code> | </code> |
=== 새로운 구성 옵션의 의미 === | |
| === configure 옵션 설명 === |
* //--with-manpage-format=normal// \\ 호스트 배포판에 압축된 매뉴얼 페이지가 있는 경우 Ncurses가 압축된 매뉴얼 페이지를 설치하는 것을 금지합니다. | * //--with-manpage-format=normal// \\ 호스트 배포판에 압축된 매뉴얼 페이지가 있는 경우 Ncurses가 압축된 매뉴얼 페이지를 설치하는 것을 금지합니다. |
* //--with-shared// \\ Ncurses가 공유 C 라이브러리를 빌드하고 설치하도록 합니다. | * //--with-shared// \\ Ncurses가 공유 C 라이브러리를 빌드하고 설치하도록 합니다. |
* //--without-debug// \\ Ncurses가 디버그 라이브러리를 빌드 및 설치하지 않도록 합니다. | * //--without-debug// \\ Ncurses가 디버그 라이브러리를 빌드 및 설치하지 않도록 합니다. |
* //--with-cxx-shared// \\ Ncurses가 공유 C++ 바인딩을 빌드 및 설치하도록 합니다. 또한 정적 C++ 바인딩을 빌드 및 설치하지 못하도록 합니다. | * //--with-cxx-shared// \\ Ncurses가 공유 C++ 바인딩을 빌드 및 설치하도록 합니다. 또한 정적 C++ 바인딩을 빌드 및 설치하지 못하도록 합니다. |
* //--without-ada// \\ 호스트에는 있을 수 있지만 ''chroot'' 환경에 들어가면 사용할 수 없는 Ada 컴파일러에 대한 지원을 Ncurses가 빌드하지 않도록 합니다. | * //--without-ada// \\ 호스트에는 있을 수 있지만 **chroot** 환경에 들어가면 사용할 수 없는 Ada 컴파일러에 대한 지원을 Ncurses가 빌드하지 않도록 합니다. |
* //--disable-stripping// \\ 빌드 시스템이 호스트에서 ''strip'' 프로그램을 사용하지 못하도록 합니다. 크로스 컴파일된 프로그램에서 호스트 도구를 사용하면 오류가 발생할 수 있습니다. | * //--disable-stripping// \\ 빌드 시스템이 호스트에서 **strip** 프로그램을 사용하지 못하도록 합니다. 크로스 컴파일된 프로그램에서 호스트 도구를 사용하면 오류가 발생할 수 있습니다. |
* //-enable-widec// \\ 일반 라이브러리(예: ''libncursesw.so.6.4-20230520'') 대신 와이드 문자 라이브러리(예: ''libncurses.so.6.4-20230520'')를 빌드하도록 한다. 이러한 와이드 문자 라이브러리는 멀티바이트 및 기존 8비트 로캘 모두에서 사용할 수 있는 반면 일반 라이브러리는 8비트 로캘에서만 제대로 작동합니다. 와이드 문자 라이브러리와 일반 라이브러리는 소스 호환이 가능하지만 바이너리 호환은 불가능합니다. | * //-enable-widec// \\ 일반 라이브러리(예: ''libncurses.so.6.4-20230520'') 대신 와이드 문자 라이브러리(예: ''libncursesw.so.6.4-20230520'')를 빌드하도록 한다. 와이드 문자 라이브러리는 멀티바이트 및 기존 8비트 로캘 모두에서 사용할 수 있는 반면 일반 라이브러리는 8비트 로캘에서만 제대로 작동합니다. 와이드 문자 라이브러리와 일반 라이브러리는 소스 호환이 가능하지만 바이너리 호환은 불가능합니다. |
| |
패키지를 컴파일합니다. | 패키지를 컴파일합니다. |
<code lang=bash> | |
| <code bash> |
make | make |
</code> | </code> |
| |
패키지를 설치합니다. | 패키지를 설치합니다. |
<code lang=bash> | |
| <code bash> |
make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install | make DESTDIR=$LFS TIC_PATH=$(pwd)/build/progs/tic install |
ln -sv libncursesw.so $LFS/usr/lib/libncurses.so | ln -sv libncursesw.so $LFS/usr/lib/libncurses.so |
</code> | </code> |
| |
=== 설치 옵션의 의미: === | === install 옵션 설명 === |
* //TIC_PATH=$(pwd)/build/progs/tic// \\ 빌드 머신에서 실행되는 새로 빌드된 ''tic'' 프로그램의 경로를 전달해야 터미널 데이터베이스가 오류 없이 생성될 수 있습니다. | |
* ''ln -sv libncursesw.so $LFS/usr/lib/libncurses.so'' \\ ''libncurses.so'' 라이브러리는 곧 빌드할 몇 가지 패키지에 필요합니다. 이 심볼릭 링크를 생성하여 ''libncursesw.so''를 대체로 사용합니다. | * //TIC_PATH=$(pwd)/build/progs/tic// \\ 빌드 머신에서 실행되는 새로 빌드된 **tic** 프로그램의 경로를 전달해야 터미널 데이터베이스가 오류 없이 생성될 수 있습니다. |
| * **ln -sv libncursesw.so $LFS/usr/lib/libncurses.so** \\ ''libncurses.so'' 라이브러리는 곧 빌드할 몇 가지 패키지에 필요합니다. 이 심볼릭 링크를 생성하여 ''libncursesw.so''를 대체로 사용합니다. |
* **sed -e 's/^#if.*XOPEN.*$/#if 1/' ...** \\ 헤더 파일 ''curses.h''에는 다양한 Ncurses 데이터 구조의 정의가 포함되어 있습니다. 서로 다른 전처리기 매크로 정의를 사용하면 데이터 구조 정의의 두 가지 다른 집합을 사용할 수 있습니다: 8비트 정의는 ''libncurses.so''와 호환되고 와이드 문자 정의는 ''libncursesw.so''와 호환됩니다. LFS는 ''libncurses.so'' 대신 ''libncursesw.so''를 사용하므로 헤더 파일을 편집하여 항상 ''libncursesw.so''와 호환되는 와이드 문자 데이터 구조 정의를 사용하도록 합니다. | * **sed -e 's/^#if.*XOPEN.*$/#if 1/' ...** \\ 헤더 파일 ''curses.h''에는 다양한 Ncurses 데이터 구조의 정의가 포함되어 있습니다. 서로 다른 전처리기 매크로 정의를 사용하면 데이터 구조 정의의 두 가지 다른 집합을 사용할 수 있습니다: 8비트 정의는 ''libncurses.so''와 호환되고 와이드 문자 정의는 ''libncursesw.so''와 호환됩니다. LFS는 ''libncurses.so'' 대신 ''libncursesw.so''를 사용하므로 헤더 파일을 편집하여 항상 ''libncursesw.so''와 호환되는 와이드 문자 데이터 구조 정의를 사용하도록 합니다. |
| |
------ | ------ |
| |
이 패키지에 대한 자세한 내용은 [[.: 099-ncurses-6.4-20230520|섹션 8.29.2, "Ncurses의 내용"]]에 나와 있습니다. | 이 패키지에 대한 자세한 내용은 [[.: 099-ncurses-6.4-20230520#8.29.2. Ncurses 패키지 구성|8.29.2. "Ncurses 패키지 구성"]]에 나와 있습니다. |
| |