호스트 시스템에는 버전이 다음보다 크거나 같은 소프트웨어가 있어야 한다. 대부분의 현대 리눅스 배포판에서는 문제가 되지 않는다. 또한 많은 배포판에서 소프트웨어 헤더를 종종 “<패키지-이름>-devel”나 “<패키지-이름>-dev” 형식으로 별도의 패키지에 표시한다. 배포판에서 그렇게 제공하는 경우 반드시 설치한다.
나열된 소프트웨어 패키지 버전의 이전 버전도 작동할 수는 있지만, 테스트되지는 않았다.
Bash-3.2 (/bin/sh 가 Bash로 심볼릭 또는 하드링크 되어야 한다)
Binutils-2.25 (2.34 이후의 버전은 테스트되지 않았기 때문에 권장되지 않음)
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++를 포함 (9.2.0 이후의 버전은 테스트되지 않았기 때문에 권장되지 않음)
Glibc-2.11 (2.31 이후의 버전은 테스트되지 않았기 때문에 권장되지 않음)
Grep-2.5.1a
Gzip-1.3.12
Linux Kernel-3.2
이 커널 버전이 필요한 이유는 개발자의 권장 사항에 따라 6장에서 glibc를 빌드할 때 그 버전을 지정하기 때문이다. 또 udev에도 필요하다.
호스트 커널이 3.2 이전인 경우 커널을 보다 높은 버전으로 교체해야 한다. 이것을 할 수 있는 방법은 두 가지가 있다. 먼저 리눅스 벤더가 3.2 이상의 커널 패키지를 제공하는지 확인하라. 만약 그렇다면, 그걸 설치 하라. 벤더가 수용 가능한 커널 패키지를 제공하지 않거나 당신이 설치하고 싶지 않으면 직접 커널을 컴파일할 수도 있다. 커널을 컴파일 하고 부팅 로더를 구성하는 방법(호스트에서 GRUB를 사용하는 것으로 간주)은 8장에 수록되어 있다.
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같은 다른 소프트웨어를 가리키는 Symlink도 작동하겠지만 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