# 호스트 시스템 조건
호스트 시스템은 아래 소프트웨어의 최소한 아래의 버전이 필요합니다. 이는 현대적인 리눅스 배포판에서는 큰 문제가 아닐 것입니다. 또한 많은 배포판은 소프트웨어 헤더를 별도의 패키지(주로 <패키지 이름>-dev
나 <패키지 이름>-devel
)에 포함할 것이라는 것을 참고하십시오. 만약 배포판이 이를 제공한다면 같이 설치하십시오.
나열된 소프트웨어의 구버전도 작동할 수 있지만, 확인되지는 않았습니다.
Bash 3.2 (/bin/sh
는 bash로의 하드 링크나 심볼릭 링크여야 합니다)
Binutils 2.25 (2.36.1보다 더 최신 버전은 확인되지 않았기에 권장되지 않습니다)
Bison 2.7 (/usr/bin/yacc
은 bison으로의 링크 혹은 bison을 실행하는 작은 스크립트여야 합니다)
Bzip2 1.0.4
Coreutils 6.9
Diffutils 2.8.1
Findutils 4.2.31
Gawk 4.0.1 (/usr/bin/awk
은 gawk으로의 링크여야 합니다)
GCC 6.2 - C++ 컴파일러(g++
) 포함 (10.2.0보다 더 최신 버전은 확인되지 않았기에 권장되지 않습니다)
Glibc 2.11 (2.33보다 더 최신 버전은 확인되지 않았기에 권장되지 않습니다)
Grep 2.5.1a
Gzip 1.3.12
Linux 커널 3.2
리눅스 커널 버전 조건이 있는 이유는 6장에서 Glibc를 빌드할 때 개발자의 권장에 따라 이 버전을 명시하기 때문입니다.
만약 호스트의 커널이 3.2보다 더 옛날 버전이라면 최신 버전으로 바꿔야 합니다. 이를 위한 방법은 두 가지입니다. 먼저, 리눅스 벤더가 3.2 혹은 더 최신 버전의 커널을 제공하는지 확인하십시오. 만약 그렇다면, 이 커널을 설치하면 됩니다. 만약 벤더가 이러한 커널 패키지를 제공하지 않거나 이를 설치하지 않으려면, 커널을 직접 컴파일하면 됩니다. 커널 컴파일과 부트로더 설정(호스트가 GRUB을 사용하는 경우)은 10장에 있습니다.
M4 1.4.10
Make 4.0
Patch 2.5.4
Perl 5.8.8
Python 3.4
Sed 4.1.5
Tar 1.22
Texinfo 4.7
Xz 5.0.0
중요
위에 언급된 심볼릭 링크는 책의 설명대로 LFS 시스템을 빌드하는 데 필요합니다. dash
, mawk
등의 다른 소프트웨어로의 심볼릭 링크는 작동할 수도 있지만, LFS 개발 팀이 지원하거나 확인하지 않고, 일부 패키지는 설명의 변경이나 추가 패치가 필요할 수도 있습니다.
호스트 시스템이 적절한 버전을 사용하는 지, 그리고 프로그램을 컴파일할 수 있는지 확인하려면, 아래 스크립트를 실행하십시오:
cat > version-check.sh << "EOF"
#!/bin/bash
# Simple script to list version numbers of critical development tools
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
MYSH=$(readlink -f /bin/sh)
echo "/bin/sh -> $MYSH"
echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
unset MYSH
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -h /usr/bin/yacc ]; then
echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
elif [ -x /usr/bin/yacc ]; then
echo yacc is `/usr/bin/yacc --version | head -n1`
else
echo "yacc not found"
fi
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -h /usr/bin/awk ]; then
echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
elif [ -x /usr/bin/awk ]; then
echo awk is `/usr/bin/awk --version | head -n1`
else
echo "awk not found"
fi
gcc --version | head -n1
g++ --version | head -n1
ldd --version | head -n1 | cut -d" " -f2- # glibc version
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
python3 --version
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1 # texinfo version
xz --version | head -n1
echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
if [ -x dummy ]
then echo "g++ compilation OK";
else echo "g++ compilation failed"; fi
rm -f dummy.c dummy
EOF
bash version-check.sh
⟵ 개요 단계별 LFS 빌드 ⟶