# Linux Kernel Dev Blog 9 - Linux From Scratch (LFS) Compiling pt 2 ## 4/8/2020 ### Tcl-8.6.10 TCL is a test suite runner so we can test our installed packages like GCC etc ```shell cd unix ./configure --prefix=/tools make # run tests TZ=UTC make test # 0 Failures! # install (NOT DONE) make install chmod -v u+w /tools/lib/libtcl8.6.so make install-private-headers ln -sv tclsh8.6 /tools/bin/tclsh ``` ### Expect-5.45.4 ```shell cp -v configure{,.orig} sed 's:/usr/local/bin:/bin:' configure.orig > configure ./configure --prefix=/tools \ --with-tcl=/tools/lib \ --with-tclinclude=/tools/include make -j2 make test make SCRIPTS="" install ``` ### DejaGNU-1.6.2 ```shell ./configure --prefix=/tools make install make check ``` ### M4-1.4.18 ```shell sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h ./configure --prefix=/tools make -j2 make check make install ``` ### Ncurses-6.2 ```shell sed -i s/mawk// configure ./configure --prefix=/tools \ --with-shared \ --without-debug \ --without-ada \ --enable-widec \ --enable-overwrite make -j2 make install ln -s libncursesw.so /tools/lib/libncurses.so ``` ### Bash-5.0 ```shell ./configure --prefix=/tools --without-bash-malloc make -j2 make tests make install ln -sv bash /tools/bin/sh ``` ### Bison-3.5.2 ```shell ./configure --prefix=/tools make -j2 make check make install ``` ### Bzip2-1.0.8 ```shell # shared lib first make -f Makefile-libbz2_so make clean # test and compile make -j2 # instlal make PREFIX=/tools install cp -v bzip2-shared /tools/bin/bzip2 cp -av libbz2.so* /tools/lib ln -sv libbz2.so.1.0 /tools/lib/libbz2.so ``` ### Coreutils-8.31 ```shell ./configure --prefix=/tools --enable-install-program=hostname make -j2 make install ``` ### Diffutils-3.7 ```shell ./configure --prefix=/tools make -j2 make check make install ``` ### File-5.38 ```shell ./configure --prefix=/tools make -j2 make check make install ``` ### Findutils-4.7.0 ```shell ./configure --prefix=/tools; make -j2; make check; make install; ``` ### Gawk-5.0.1 ```shell ./configure --prefix=/tools; make -j2; make check; make install; ``` ### Gettext-0.20.1 ```shell ./configure --disable-shared; make -j2; cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /tools/bin ``` ### Grep-3.4 ```shell ./configure --prefix=/tools; make -j2; make check; make install; ``` ### Gzip-1.10 ```shell ./configure --prefix=/tools; make -j2; make check; make install; ``` ### Make-4.3 ```shell ./configure --prefix=/tools --without-guile; make -j2; make check; make install; ``` ### Patch-2.7.6 ```shell ./configure --prefix=/tools; make -j2; make check; make install; ``` ### Perl-5.30.1 ```shell sh Configure -des -Dprefix=/tools -Dlibs=-lm -Uloclibpth -Ulocincpth make -j2 cp -v perl cpan/podlators/scripts/pod2man /tools/bin mkdir -pv /tools/lib/perl5/5.30.1 cp -Rv lib/* /tools/lib/perl5/5.30.1 ``` ### Python-3.8.1 ```shell sed -i '/def add_multiarch_paths/a \ return' setup.py ./configure --prefix=/tools --without-ensurepip make -j2 make install ``` ### Sed-4.8 ```shell ./configure --prefix=/tools; make -j2; make check; make install; ``` ### Tar-1.32 ```shell ./configure --prefix=/tools; make -j2; make check; make install; ``` ### Texinfo-6.7 ```shell ./configure --prefix=/tools; make -j2; make check; make install; ``` ### Xz-5.2.4 ```shell ./configure --prefix=/tools; make -j2; make check; make install; ``` ## STRIPPING! I made it through the tool builds, now to clean up the garbage we dont need remove scripts and docs to save space ```shell strip --strip-debug /tools/lib/* /usr/bin/strip --strip-unneeded /tools/{,s}bin/* rm -rf /tools/{,share}/{info,man,doc} find /tools/{lib,libexec} -name \*.la -delete ```