http://www.linuxfromscratch.org/lfs/view/stable/chapter05/introduction.html http://www.linuxfromscratch.org/lfs/view/stable/chapter04/creatingtoolsdir.html 2.4. Setting The $LFS Variable $ sudo mkdir /monster $ sudo su # export LFS=/monster $ sudo mkdir -v $LFS/sources $ sudo chmod -v a+wt $LFS/sources mode of ‘/monster/sources’ changed from 0755 (rwxr-xr-x) to 1777 (rwxrwxrwt) An easy way to download all of the packages and patches is by using wget-list as an input to wget. For example: wget --input-file=wget-list --continue --directory-prefix=$LFS/sources wget -c http://www.linuxfromscratch.org/lfs/view/stable/md5sums mkdir -v $LFS/tools $ sudo ln -sv $LFS/tools / [sudo] password for wilderman: ‘/tools’ -> ‘/monster/tools’ $ sudo groupadd lfs $ sudo useradd -s /bin/bash -g lfs -m -k /dev/null lfs $ sudo passwd lfs Changing password for user lfs. New password: 73575981.,. Retype new password: 73575981.,. passwd: all authentication tokens updated successfully. $ sudo chown -v lfs $LFS/tools changed ownership of ‘/monster/tools’ from wilderman to lfs $ sudo sudo chown -v lfs $LFS/sources changed ownership of ‘/monster/sources’ from root to lfs $ su - lfs Password: -bash-4.2$ 4.5. About SBUs http://www.linuxfromscratch.org/lfs/view/stable/chapter04/aboutsbus.html lfs:~$ export MAKEFLAGS='-j 64' http://www.linuxfromscratch.org/lfs/view/stable/chapter05/chapter05.html lfs:~/sources/binutils-2.26$ ./config.guess x86_64-pc-linux-gnu 5.4. Binutils-2.26 - Pass 1 5.4.1. Installation of Cross Binutils http://www.linuxfromscratch.org/lfs/view/stable/chapter05/binutils-pass1.html mkdir -v build cd build lfs:~/sources/binutils-2.26$ mkdir build lfs:~/sources/binutils-2.26$ cd build/ ../configure --prefix=/tools --with-sysroot=$LFS --target=$LFS_TGT --disable-nls --disable-werror If building on x86_64, create a symlink to ensure the sanity of the toolchain: $ case $(uname -m) in > x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;; > esac mkdir: created directory '/tools/lib' '/tools/lib64' -> 'lib' 5.5. GCC-5.3.0 - Pass 1 5.5.1. Installation of Cross GCC lfs:~/sources$ tar xjf /monster/sources/gcc-5.3.0.tar.bz2 lfs:~/sources/gcc-5.3.0$ tar -xf /monster/sources/mpfr-3.1.3.tar.xz $ mv -v mpfr-3.1.3 mpfr 'mpfr-3.1.3' -> 'mpfr' $ tar -xf /monster/sources/gmp-6.1.0.tar.xz lfs:~/sources/gcc-5.3.0$ mv -v gmp-6.1.0 gmp 'gmp-6.1.0' -> 'gmp' $ tar -xf /monster/sources/mpc-1.0.3.tar.gz $ mv mpc-1.0.3 mpc The following command will change the location of GCC's default dynamic linker to use the one installed in /tools. It also removes /usr/include from GCC's include search path. Issue: for file in \ $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h) do cp -uv $file{,.orig} sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ -e 's@/usr@/tools@g' $file.orig > $file echo ' #undef STANDARD_STARTFILE_PREFIX_1 #undef STANDARD_STARTFILE_PREFIX_2 #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/" #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file touch $file.orig 'gcc/config/tilepro/linux.h' -> 'gcc/config/tilepro/linux.h.orig' 'gcc/config/ia64/sysv4.h' -> 'gcc/config/ia64/sysv4.h.orig' 'gcc/config/ia64/linux.h' -> 'gcc/config/ia64/linux.h.orig' 'gcc/config/nios2/linux.h' -> 'gcc/config/nios2/linux.h.orig' 'gcc/config/frv/linux.h' -> 'gcc/config/frv/linux.h.orig' 'gcc/config/mn10300/linux.h' -> 'gcc/config/mn10300/linux.h.orig' 'gcc/config/sparc/linux64.h' -> 'gcc/config/sparc/linux64.h.orig' 'gcc/config/sparc/sysv4.h' -> 'gcc/config/sparc/sysv4.h.orig' 'gcc/config/sparc/linux.h' -> 'gcc/config/sparc/linux.h.orig' 'gcc/config/microblaze/linux.h' -> 'gcc/config/microblaze/linux.h.orig' 'gcc/config/m68k/linux.h' -> 'gcc/config/m68k/linux.h.orig' 'gcc/config/sh/linux.h' -> 'gcc/config/sh/linux.h.orig' 'gcc/config/tilegx/linux.h' -> 'gcc/config/tilegx/linux.h.orig' 'gcc/config/s390/linux.h' -> 'gcc/config/s390/linux.h.orig' 'gcc/config/alpha/linux.h' -> 'gcc/config/alpha/linux.h.orig' 'gcc/config/i386/linux64.h' -> 'gcc/config/i386/linux64.h.orig' 'gcc/config/i386/sysv4.h' -> 'gcc/config/i386/sysv4.h.orig' 'gcc/config/i386/linux.h' -> 'gcc/config/i386/linux.h.orig' 'gcc/config/vax/linux.h' -> 'gcc/config/vax/linux.h.orig' 'gcc/config/m32r/linux.h' -> 'gcc/config/m32r/linux.h.orig' 'gcc/config/cris/linux.h' -> 'gcc/config/cris/linux.h.orig' 'gcc/config/mips/linux.h' -> 'gcc/config/mips/linux.h.orig' 'gcc/config/xtensa/linux.h' -> 'gcc/config/xtensa/linux.h.orig' 'gcc/config/bfin/linux.h' -> 'gcc/config/bfin/linux.h.orig' 'gcc/config/linux.h' -> 'gcc/config/linux.h.orig' 'gcc/config/rs6000/linux64.h' -> 'gcc/config/rs6000/linux64.h.orig' 'gcc/config/rs6000/sysv4.h' -> 'gcc/config/rs6000/sysv4.h.orig' 'gcc/config/rs6000/linux.h' -> 'gcc/config/rs6000/linux.h.orig' lfs:~/sources/gcc-5.3.0$ mkdir -v build mkdir: created directory 'build' lfs:~/sources/gcc-5.3.0$ mkdir -v build mkdir: created directory 'build' $ cd build ../configure \ --target=$LFS_TGT \ --prefix=/tools \ --with-glibc-version=2.11 \ --with-sysroot=$LFS \ --with-newlib \ --without-headers \ --with-local-prefix=/tools \ --with-native-system-header-dir=/tools/include \ --disable-nls \ --disable-shared \ --disable-multilib \ --disable-decimal-float \ --disable-threads \ --disable-libatomic \ --disable-libgomp \ --disable-libquadmath \ --disable-libssp \ --disable-libvtv \ --disable-libstdcxx \ --enable-languages=c,c++ Compile GCC by running: time make real 2m3.648s user 20m55.263s sys 2m31.014s Install the package: make install 5.6.1. Installation of Linux API Headers Make sure there are no stale files embedded in the package: make mrproper Now extract the user-visible kernel headers from the source. They are placed in an intermediate local directory and copied to the needed location because the extraction process removes any existing files in the target directory. make INSTALL_HDR_PATH=dest headers_install cp -rv dest/include/* /tools/include 5.7.1. Installation of Glibc $ tar -xf /monster/sources/glibc-2.23.tar.xz lfs:~/sources$ cd glibc-2.23/ lfs:~/sources/glibc-2.23$ mkdir -v build mkdir: created directory 'build' ../configure \ --prefix=/tools \ --host=$LFS_TGT \ --build=$(../scripts/config.guess) \ --disable-profile \ --enable-kernel=2.6.32 \ --enable-obsolete-rpc \ --with-headers=/tools/include \ libc_cv_forced_unwind=yes \ libc_cv_ctors_header=yes \ libc_cv_c_cleanup=yes Compile the package: make -j64 Install the package: make install Caution At this point, it is imperative to stop and ensure that the basic functions (compiling and linking) of the new toolchain are working as expected. To perform a sanity check, run the following commands: echo 'int main(){}' > dummy.c $LFS_TGT-gcc dummy.c readelf -l a.out | grep ': /tools' lfs:~/sources/glibc-2.23/build$ readelf -l a.out | grep ': /tools' [Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2] $ rm -v dummy.c a.out removed 'dummy.c' removed 'a.out' 5.8.1. Installation of Target Libstdc++ lfs:~/sources/gcc-5.3.0$ cd libstdc++-v3/ lfs:~/sources/gcc-5.3.0/libstdc++-v3$ mkdir -v build ../libstdc++-v3/configure \ --host=$LFS_TGT \ --prefix=/tools \ --disable-multilib \ --disable-nls \ --disable-libstdcxx-threads \ --disable-libstdcxx-pch \ --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/5.3.0 $ make $ make install 5.9. Binutils-2.26 - Pass 2 CC=$LFS_TGT-gcc \ AR=$LFS_TGT-ar \ RANLIB=$LFS_TGT-ranlib \ ../configure \ --prefix=/tools \ --disable-nls \ --disable-werror \ --with-lib-path=/tools/lib \ --with-sysroot lfs:~/sources/binutils-2.26/build$ make Install the package: make install Now prepare the linker for the “Re-adjusting” phase in the next chapter: make -C ld clean make -C ld LIB_PATH=/usr/lib:/lib cp -v ld/ld-new /tools/bin 5.10. GCC-5.3.0 - Pass 2 5.10.1. Installation of GCC lfs:~/sources$ tar xjf /monster/sources/gcc-5.3.0.tar.bz2 lfs:~/sources/gcc-5.3.0$ cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \ > `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h Once again, change the location of GCC's default dynamic linker to use the one installed in /tools. for file in \ $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h) do cp -uv $file{,.orig} sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ -e 's@/usr@/tools@g' $file.orig > $file echo ' #undef STANDARD_STARTFILE_PREFIX_1 #undef STANDARD_STARTFILE_PREFIX_2 #define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/" #define STANDARD_STARTFILE_PREFIX_2 ""' >> $file touch $file.orig done 'gcc/config/tilepro/linux.h' -> 'gcc/config/tilepro/linux.h.orig' 'gcc/config/ia64/sysv4.h' -> 'gcc/config/ia64/sysv4.h.orig' 'gcc/config/ia64/linux.h' -> 'gcc/config/ia64/linux.h.orig' 'gcc/config/nios2/linux.h' -> 'gcc/config/nios2/linux.h.orig' 'gcc/config/frv/linux.h' -> 'gcc/config/frv/linux.h.orig' 'gcc/config/mn10300/linux.h' -> 'gcc/config/mn10300/linux.h.orig' 'gcc/config/sparc/linux64.h' -> 'gcc/config/sparc/linux64.h.orig' 'gcc/config/sparc/sysv4.h' -> 'gcc/config/sparc/sysv4.h.orig' 'gcc/config/sparc/linux.h' -> 'gcc/config/sparc/linux.h.orig' 'gcc/config/microblaze/linux.h' -> 'gcc/config/microblaze/linux.h.orig' 'gcc/config/m68k/linux.h' -> 'gcc/config/m68k/linux.h.orig' 'gcc/config/sh/linux.h' -> 'gcc/config/sh/linux.h.orig' 'gcc/config/tilegx/linux.h' -> 'gcc/config/tilegx/linux.h.orig' 'gcc/config/s390/linux.h' -> 'gcc/config/s390/linux.h.orig' 'gcc/config/alpha/linux.h' -> 'gcc/config/alpha/linux.h.orig' 'gcc/config/i386/linux64.h' -> 'gcc/config/i386/linux64.h.orig' 'gcc/config/i386/sysv4.h' -> 'gcc/config/i386/sysv4.h.orig' 'gcc/config/i386/linux.h' -> 'gcc/config/i386/linux.h.orig' 'gcc/config/vax/linux.h' -> 'gcc/config/vax/linux.h.orig' 'gcc/config/m32r/linux.h' -> 'gcc/config/m32r/linux.h.orig' 'gcc/config/cris/linux.h' -> 'gcc/config/cris/linux.h.orig' 'gcc/config/mips/linux.h' -> 'gcc/config/mips/linux.h.orig' 'gcc/config/xtensa/linux.h' -> 'gcc/config/xtensa/linux.h.orig' 'gcc/config/bfin/linux.h' -> 'gcc/config/bfin/linux.h.orig' 'gcc/config/linux.h' -> 'gcc/config/linux.h.orig' 'gcc/config/rs6000/linux64.h' -> 'gcc/config/rs6000/linux64.h.orig' 'gcc/config/rs6000/sysv4.h' -> 'gcc/config/rs6000/sysv4.h.orig' 'gcc/config/rs6000/linux.h' -> 'gcc/config/rs6000/linux.h.orig' lfs:~/sources/gcc-5.3.0$ tar -xf /monster/sources/mpfr-3.1.3.tar.xz mv -v mpfr-3.1.3 mpfr tar -xf ../gmp-6.1.0.tar.xz mv -v gmp-6.1.0 gmp tar -xf ../mpc-1.0.3.tar.gz mv -v mpc-1.0.3 mpc lfs:~/sources/gcc-5.3.0$ mkdir -v build lfs:~/sources/gcc-5.3.0$ cd build Before starting to build GCC, remember to unset any environment variables that override the default optimization flags. Now prepare GCC for compilation: CC=$LFS_TGT-gcc \ CXX=$LFS_TGT-g++ \ AR=$LFS_TGT-ar \ RANLIB=$LFS_TGT-ranlib \ ../configure \ --prefix=/tools \ --with-local-prefix=/tools \ --with-native-system-header-dir=/tools/include \ --enable-languages=c,c++ \ --disable-libstdcxx-pch \ --disable-multilib \ --disable-bootstrap \ --disable-libgomp lfs:~/sources/gcc-5.3.0/build$ time make real 21m45.295s user 17m54.075s sys 3m18.301s Install the package: make install As a finishing touch, create a symlink. Many programs and scripts run cc instead of gcc, which is used to keep programs generic and therefore usable on all kinds of UNIX systems where the GNU C compiler is not always installed. Running cc leaves the system administrator free to decide which C compiler to install: lfs:~/sources/gcc-5.3.0/build$ ln -sv gcc /tools/bin/cc '/tools/bin/cc' -> 'gcc' Caution At this point, it is imperative to stop and ensure that the basic functions (compiling and linking) of the new toolchain are working as expected. To perform a sanity check, run the following commands: lfs:~/sources/gcc-5.3.0/build$ echo 'int main(){}' > dummy.c lfs:~/sources/gcc-5.3.0/build$ cc dummy.c lfs:~/sources/gcc-5.3.0/build$ readelf -l a.out | grep ': /tools' [Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2] Once all is well, clean up the test files: rm -v dummy.c a.out 5.11. Tcl-core-8.6.4 5.11.1. Installation of Tcl-core Prepare Tcl for compilation: cd unix ./configure --prefix=/tools Build the package: make Compilation is now complete. As discussed earlier, running the test suite is not mandatory for the temporary tools here in this chapter. To run the Tcl test suite anyway, issue the following command: TZ=UTC make test Install the package: make install Make the installed library writable so debugging symbols can be removed later: chmod -v u+w /tools/lib/libtcl8.6.so Install Tcl's headers. The next package, Expect, requires them to build. $ make install-private-headers Installing private header files to /tools/include/ Now make a necessary symbolic link: lfs:~/sources/tcl8.6.4/unix$ ln -sv tclsh8.6 /tools/bin/tclsh '/tools/bin/tclsh' -> 'tclsh8.6' 5.12.1. Installation of Expect lfs:~/sources/expect5.45$ cp -v configure{,.orig} 'configure' -> 'configure.orig' lfs:~/sources/expect5.45$ cp -v configure{,.orig} 'configure' -> 'configure.orig' lfs:~/sources/expect5.45$ sed 's:/usr/local/bin:/bin:' configure.orig > configure Now prepare Expect for compilation: ./configure --prefix=/tools \ --with-tcl=/tools/lib \ --with-tclinclude=/tools/include Build the package: make Install the package: make SCRIPTS="" install lfs:~/sources/expect5.45$ ldd /tools/bin/expect linux-vdso.so.1 (0x00007ffe7df51000) libexpect5.45.so => /tools/lib/expect5.45/libexpect5.45.so (0x00007fe8e6af4000) libtcl8.6.so => /tools/lib/libtcl8.6.so (0x00007fe8e6734000) libdl.so.2 => /tools/lib/libdl.so.2 (0x00007fe8e6530000) libm.so.6 => /tools/lib/libm.so.6 (0x00007fe8e622b000) libc.so.6 => /tools/lib/libc.so.6 (0x00007fe8e5e8a000) libutil.so.1 => /tools/lib/libutil.so.1 (0x00007fe8e5c87000) libpthread.so.0 => /tools/lib/libpthread.so.0 (0x00007fe8e5a6a000) /tools/lib64/ld-linux-x86-64.so.2 (0x00007fe8e6d25000) 5.13.1. Installation of DejaGNU lfs:~/sources$ tar xzf /monster/sources/dejagnu-1.5.3.tar.gz Prepare DejaGNU for compilation: ./configure --prefix=/tools 5.14.1. Installation of Check lfs:~/sources$ tar xzf /monster/sources/check-0.10.0.tar.gz PKG_CONFIG= ./configure --prefix=/tools Build the package: make lfs:~/sources/check-0.10.0$ make check make install 5.15.1. Installation of Ncurses lfs:~/sources$ tar xzf /monster/sources/ncurses-6.0.tar.gz lfs:~/sources/ncurses-6.0$ sed -i s/mawk// configure ./configure --prefix=/tools \ --with-shared \ --without-debug \ --without-ada \ --enable-widec \ --enable-overwrite ** Configuration summary for NCURSES 6.0 20150808: extended funcs: yes xterm terminfo: xterm-new bin directory: /tools/bin lib directory: /tools/lib include directory: /tools/include man directory: /tools/share/man terminfo directory: /tools/share/terminfo Compile the package: make Install the package: make install 5.16.1. Installation of Bash lfs:~/sources$ tar xzf /monster/sources/bash-4.3.30.tar.gz HowTo Apply a Patch File To My Linux / UNIX Source Code http://www.cyberciti.biz/faq/appy-patch-file-using-patch-command/ patch command syntax The basic syntax is as follows: $ patch < patch.file $ patch source.code.file < patch.file $ patch -p LEVEL < {/path/to/patch/file} To apply a patch, one could run the following command in a shell: $ patch < /path/to/file ./configure --prefix=/tools --without-bash-malloc Compile the package: make make tests make install $ ln -sv bash /tools/bin/sh '/tools/bin/sh' -> 'bash' 5.17.1. Installation of Bzip2 $ tar xzf /monster/sources/bzip2-1.0.6.tar.gz lfs:~/sources/bzip2-1.0.6$ patch -p1 < /monster/sources/bzip2-1.0.6-install_docs-1.patch patching file Makefile make make PREFIX=/tools install 5.18.1. Installation of Coreutils lfs:~/sources$ tar xf /monster/sources/coreutils-8.25.tar.xz lfs:~/sources/coreutils-8.25$ make make RUN_EXPENSIVE_TESTS=yes check make install 5.19.1. Installation of Diffutils ./configure --prefix=/tools make make check make install 5.20.1. Installation of File lfs:~/sources$ tar xf /monster/sources/file-5.25.tar.gz lfs:~/sources$ ./configure --prefix=/tools lfs:~/sources$ make lfs:~/sources$ make check lfs:~/sources$ make install 5.21.1. Installation of Findutils lfs:~/sources$ tar xf /monster/sources/findutils-4.6.0.tar.gz $ ./configure --prefix=/tools $ make $ make check $ make install 5.22.1. Installation of Gawk lfs:~/sources$ tar xf /monster/sources/gawk-4.1.3.tar.xz lfs:~/sources/gawk-4.1.3$ ./configure --prefix=/tools $ make $ make check $ make install 5.23.1. Installation of Gettext lfs:~/sources$ tar xf /monster/sources/gettext-0.19.7.tar.xz lfs:~/sources$ cd gettext-0.19.7/gettext-tools/ EMACS="no" ./configure --prefix=/tools --disable-shared make -C gnulib-lib make -C intl pluralx.c make -C src msgfmt make -C src msgmerge make -C src xgettext Install the msgfmt, msgmerge and xgettext programs: cp -v src/{msgfmt,msgmerge,xgettext} /tools/bin 'src/msgfmt' -> '/tools/bin/msgfmt' 'src/msgmerge' -> '/tools/bin/msgmerge' 'src/xgettext' -> '/tools/bin/xgettext' 5.24.1. Installation of Grep lfs:~/sources$ tar xf /monster/sources/grep-2.23.tar.xz ./configure --prefix=/tools make make check make install 5.25.1. Installation of Gzip lfs:~/sources$ tar xf /monster/sources/gzip-1.6.tar.xz ./configure --prefix=/tools make make check make install 5.26.1. Installation of M4 lfs:~/sources$ tar xf /monster/sources/m4-1.4.17.tar.xz ./configure --prefix=/tools make make check make install 5.27.1. Installation of Make $ tar xf /monster/sources/make-4.1.tar.bz2 make make check ------------------------------------------------------------------------------ Running tests for GNU make on Linux sullivan.dimar.mil.co 3.10.0-327.13.1.el7.x86_64 x86_64 GNU Make 4.1 ------------------------------------------------------------------------------ Finding tests... =========================================================================== Regression PASSED: GNU Make 4.1 (x86_64-unknown-linux-gnu) built with gcc =========================================================================== make install 5.28.1. Installation of Patch lfs:~/sources$ tar xf /monster/sources/patch-2.7.5.tar.xz 5.29.1. Installation of Perl lfs:~/sources$ tar xf /monster/sources/perl-5.22.1.tar.bz2 make $ cp -v perl cpan/podlators/pod2man /tools/bin 'perl' -> '/tools/bin/perl' 'cpan/podlators/pod2man' -> '/tools/bin/pod2man' $ mkdir -pv /tools/lib/perl5/5.22.1 mkdir: created directory '/tools/lib/perl5' mkdir: created directory '/tools/lib/perl5/5.22.1' cp -Rv lib/* /tools/lib/perl5/5.22.1 5.30.1. Installation of Sed lfs:~/sources$ tar xf /monster/sources/sed-4.2.2.tar.bz2 ./configure --prefix=/tools $ make $ make check $ make install 5.31.1. Installation of Tar lfs:~/sources$ tar xf /monster/sources/tar-1.28.tar.xz $ cd tar-1.28/ ./configure --prefix=/tools make make check make install 5.32.1. Installation of Texinfo $ tar xf /monster/sources/texinfo-6.1.tar.xz ./configure --prefix=/tools make make check make install 5.33.1. Installation of Util-linux $ wget -c https://www.kernel.org/pub/linux/utils/util-linux/v2.27/util-linux-2.27.1.tar.xz $ tar xf /monster/sources/util-linux-2.27.1.tar.xz ./configure --prefix=/tools \ --without-python \ --disable-makeinstall-chown \ --without-systemdsystemunitdir \ PKG_CONFIG="" make make install 5.34.1. Installation of Xz lfs:~/sources$ tar xf /monster/sources/xz-5.2.2.tar.xz ./configure --prefix=/tools make make check make install 5.35. Stripping lfs:~/sources$ strip --strip-debug /tools/lib/* strip: Warning: '/tools/lib/audit' is not an ordinary file strip: Warning: '/tools/lib/expect5.45' is not an ordinary file strip: Warning: '/tools/lib/gawk' is not an ordinary file strip: Warning: '/tools/lib/gcc' is not an ordinary file strip: Warning: '/tools/lib/gconv' is not an ordinary file strip: Warning: '/tools/lib/itcl4.0.3' is not an ordinary file strip:/tools/lib/libasan.la: File format not recognized strip:/tools/lib/libatomic.la: File format not recognized strip:/tools/lib/libbfd.la: File format not recognized strip:/tools/lib/libblkid.la: File format not recognized strip:/tools/lib/libc.so: File format not recognized strip:/tools/lib/libcc1.la: File format not recognized strip:/tools/lib/libcheck.la: File format not recognized strip:/tools/lib/libcilkrts.la: File format not recognized strip:/tools/lib/libcilkrts.spec: File format not recognized strip:/tools/lib/libfdisk.la: File format not recognized 5.36. Changing Ownership chown -R root:root $LFS/tools =========================================================================== III. Building the LFS System =========================================================================== 6.2. Preparing Virtual Kernel File Systems [wilderman@sullivan sources]$ mkdir -pv $LFS/{dev,proc,sys,run} mkdir: created directory ‘/monster/dev’ mkdir: created directory ‘/monster/proc’ mkdir: created directory ‘/monster/sys’ mkdir: created directory ‘/monster/run’ 6.2.1. Creating Initial Device Nodes [wilderman@sullivan sources]$ sudo mknod -m 600 $LFS/dev/console c 5 1 [wilderman@sullivan sources]$ sudo mknod -m 666 $LFS/dev/null c 1 3 6.2.2. Mounting and Populating /dev [wilderman@sullivan sources]$ sudo mount -v --bind /dev $LFS/dev mount: /dev bound on /monster/dev 6.2.3. Mounting Virtual Kernel File Systems [wilderman@sullivan sources]$ sudo mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620 mount: devpts mounted on /monster/dev/pts. [wilderman@sullivan sources]$ sudo mount -vt proc proc $LFS/proc mount: proc mounted on /monster/proc. [wilderman@sullivan sources]$ sudo mount -vt sysfs sysfs $LFS/sys mount: sysfs mounted on /monster/sys. [wilderman@sullivan sources]$ sudo mount -vt tmpfs tmpfs $LFS/run mount: tmpfs mounted on /monster/run. 6.4. Entering the Chroot Environment It is time to enter the chroot environment to begin building and installing the final LFS system. As user root, run the following command to enter the realm that is, at the moment, populated with only the temporary tools: chroot "$LFS" /tools/bin/env -i \ HOME=/root \ TERM="$TERM" \ PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ /tools/bin/bash --login +h 6.5. Creating Directories I have no name!:/# mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt} mkdir: created directory '/bin' mkdir: created directory '/boot' mkdir: created directory '/etc' mkdir: created directory '/etc/opt' mkdir: created directory '/etc/sysconfig' mkdir: created directory '/home' mkdir: created directory '/lib' mkdir: created directory '/lib/firmware' mkdir: created directory '/mnt' mkdir: created directory '/opt' mkdir -pv /{media/{floppy,cdrom},sbin,srv,var} install -dv -m 0750 /root install -dv -m 1777 /tmp /var/tmp mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src} mkdir -pv /usr/{,local/}share/{color,dict,doc,info,locale,man} mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo} mkdir -v /usr/libexec mkdir -pv /usr/{,local/}share/man/man{1..8} case $(uname -m) in x86_64) ln -sv lib /lib64 ln -sv lib /usr/lib64 ln -sv lib /usr/local/lib64 ;; esac mkdir -v /var/{log,mail,spool} ln -sv /run /var/run ln -sv /run/lock /var/lock mkdir -pv /var/{opt,cache,lib/{color,misc,locate},local} 6.6. Creating Essential Files and Symlinks ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin ln -sv /tools/bin/perl /usr/bin ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib sed 's/tools/usr/' /tools/lib/libstdc++.la > /usr/lib/libstdc++.la ln -sv bash /bin/sh ln -sv /proc/self/mounts /etc/mtab Create the /etc/passwd file by running the following command: cat > /etc/passwd << "EOF" root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/dev/null:/bin/false daemon:x:6:6:Daemon User:/dev/null:/bin/false messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false nobody:x:99:99:Unprivileged User:/dev/null:/bin/false EOF Create the /etc/group file by running the following command: cat > /etc/group << "EOF" root:x:0: bin:x:1:daemon sys:x:2: kmem:x:3: tape:x:4: tty:x:5: daemon:x:6: floppy:x:7: disk:x:8: lp:x:9: dialout:x:10: audio:x:11: video:x:12: utmp:x:13: usb:x:14: cdrom:x:15: adm:x:16: messagebus:x:18: systemd-journal:x:23: input:x:24: mail:x:34: nogroup:x:99: users:x:999: EOF To remove the “I have no name!” prompt, start a new shell. Since a full Glibc was installed in Chapter 5 and the /etc/passwd and /etc/group files have been created, user name and group name resolution will now work: exec /tools/bin/bash --login +h touch /var/log/{btmp,lastlog,wtmp} chgrp -v utmp /var/log/lastlog chmod -v 664 /var/log/lastlog chmod -v 600 /var/log/btmp 6.7.1. Installation of Linux API Headers # tar xf /sources/linux-4.4.2.tar.xz root:~/lfs/linux-4.4.2# make mrproper 6.8. Man-pages-4.04 root:~/lfs# tar xf /sources/man-pages-4.04.tar.xz root:~/lfs/man-pages-4.04# make install for i in man?; do \ install -d -m 755 /usr/share/man/"$i" || exit $?; \ install -m 644 "$i"/* /usr/share/man/"$i" || exit $?; \ done; \ 6.9. Glibc-2.23 6.9.1. Installation of Glibc root:~/lfs# tar xf /sources/glibc-2.23.tar.xz Some of the Glibc programs use non-FHS compilant /var/db directory to store their runtime data. Apply the following patch to make such programs store their runtime data in the FHS-compliant locations: patch -Np1 -i ../glibc-2.23-fhs-1.patch root:~/lfs/glibc-2.23# patch -Np1 -i ../glibc-2.23-fhs-1.patch patching file Makeconfig Hunk #1 succeeded at 260 (offset 10 lines). patching file nscd/nscd.h Hunk #1 succeeded at 161 (offset 49 lines). patching file nss/db-Makefile patching file sysdeps/generic/paths.h patching file sysdeps/unix/sysv/linux/paths.h The Glibc documentation recommends building Glibc in a dedicated build directory: mkdir -v build cd build Prepare Glibc for compilation: ../configure --prefix=/usr \ --disable-profile \ --enable-kernel=2.6.32 \ --enable-obsolete-rpc Compile the package: make Important In this section, the test suite for Glibc is considered critical. Do not skip it under any circumstance. Generally a few tests do not pass, but you can generally ignore any of the test failures listed below. Now test the build results: make check XPASS: elf/tst-protected1a XPASS: elf/tst-protected1b FAIL: posix/tst-getaddrinfo4 FAIL: posix/tst-getaddrinfo5 Summary of test results: 2 FAIL 2401 PASS 84 XFAIL 2 XPASS Though it is a harmless message, the install stage of Glibc will complain about the absence of /etc/ld.so.conf. Prevent this warning with: touch /etc/ld.so.conf Install the package: make install Install the configuration file and runtime directory for nscd: cp -v ../nscd/nscd.conf /etc/nscd.conf mkdir -pv /var/cache/nscd The locales that can make the system respond in a different language were not installed by the above command. None of the locales are required, but if some of them are missing, test suites of the future packages would skip important testcases. mkdir -pv /usr/lib/locale localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8 localedef -i de_DE -f ISO-8859-1 de_DE localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro localedef -i de_DE -f UTF-8 de_DE.UTF-8 localedef -i en_GB -f UTF-8 en_GB.UTF-8 localedef -i en_HK -f ISO-8859-1 en_HK localedef -i en_PH -f ISO-8859-1 en_PH localedef -i en_US -f ISO-8859-1 en_US localedef -i en_US -f UTF-8 en_US.UTF-8 localedef -i es_MX -f ISO-8859-1 es_MX localedef -i fa_IR -f UTF-8 fa_IR localedef -i fr_FR -f ISO-8859-1 fr_FR localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro localedef -i fr_FR -f UTF-8 fr_FR.UTF-8 localedef -i it_IT -f ISO-8859-1 it_IT localedef -i it_IT -f UTF-8 it_IT.UTF-8 localedef -i ja_JP -f EUC-JP ja_JP localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 localedef -i tr_TR -f UTF-8 tr_TR.UTF-8 localedef -i zh_CN -f GB18030 zh_CN.GB18030 In addition, install the locale for your own country, language and character set. Alternatively, install all locales listed in the glibc-2.23/localedata/SUPPORTED file (it includes every locale listed above and many more) at once with the following time-consuming command: make localedata/install-locales 6.9.2. Configuring Glibc 6.9.2.1. Adding nsswitch.conf The /etc/nsswitch.conf file needs to be created because the Glibc defaults do not work well in a networked environment. Create a new file /etc/nsswitch.conf by running the following: cat > /etc/nsswitch.conf << "EOF" # Begin /etc/nsswitch.conf passwd: files group: files shadow: files hosts: files dns networks: files protocols: files services: files ethers: files rpc: files # End /etc/nsswitch.conf EOF 6.9.2.2. Adding time zone data tar -xf ../../tzdata2016a.tar.gz ZONEINFO=/usr/share/zoneinfo mkdir -pv $ZONEINFO/{posix,right} for tz in etcetera southamerica northamerica europe africa antarctica \ asia australasia backward pacificnew systemv; do zic -L /dev/null -d $ZONEINFO -y "sh yearistype.sh" ${tz} zic -L /dev/null -d $ZONEINFO/posix -y "sh yearistype.sh" ${tz} zic -L leapseconds -d $ZONEINFO/right -y "sh yearistype.sh" ${tz} done cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO zic -d $ZONEINFO -p America/New_York unset ZONEINFO root:~/lfs/glibc-2.23/build# tzselect You can make this change permanent for yourself by appending the line TZ='UTC-5'; export TZ to the file '.profile' in your home directory; then log out and log in again. Here is that TZ value again, this time on standard output so that you can use the /usr/bin/tzselect command in shell scripts: UTC-5 Then create the /etc/localtime file by running: root:~/lfs/glibc-2.23/build# cp -v /usr/share/zoneinfo/UTC /etc/localtime '/usr/share/zoneinfo/UTC' -> '/etc/localtime' 6.9.2.3. Configuring the Dynamic Loader Create a new file /etc/ld.so.conf by running the following: cat > /etc/ld.so.conf << "EOF" # Begin /etc/ld.so.conf /usr/local/lib /opt/lib EOF cat >> /etc/ld.so.conf << "EOF" # Add an include directory include /etc/ld.so.conf.d/*.conf EOF mkdir -pv /etc/ld.so.conf.d 6.9.3. Contents of Glibc Installed programs: catchsegv, gencat, getconf, getent, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, makedb, mtrace, nscd, pcprofiledump, pldd, rpcgen, sln, sotruss, sprof, tzselect, xtrace, zdump, and zic Installed libraries: ld-2.23.so, libBrokenLocale.{a,so}, libSegFault.so, libanl.{a,so}, libc.{a,so}, libc_nonshared.a, libcidn.so, libcrypt.{a,so}, libdl.{a,so}, libg.a, libieee.a, libm.{a,so}, libmcheck.a, libmemusage.so, libnsl.{a,so}, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.{a,so}, libpthread_nonshared.a, libresolv.{a,so}, librpcsvc.a, librt.{a,so}, libthread_db.so, and libutil.{a,so} Installed directories: /usr/include/arpa, /usr/include/bits, /usr/include/gnu, /usr/include/net, /usr/include/netash, /usr/include/netatalk, /usr/include/netax25, /usr/include/neteconet, /usr/include/netinet, /usr/include/netipx, /usr/include/netiucv, /usr/include/netpacket, /usr/include/netrom, /usr/include/netrose, /usr/include/nfs, /usr/include/protocols, /usr/include/rpc, /usr/include/rpcsvc, /usr/include/sys, /usr/lib/audit, /usr/lib/gconv, /usr/lib/locale, /usr/libexec/getconf, /usr/share/i18n, /usr/share/zoneinfo, /var/cache/nscd, and /var/lib/nss_db 6.10. Adjusting the Toolchain Now that the final C libraries have been installed, it is time to adjust the toolchain so that it will link any newly compiled program against these new libraries. First, backup the /tools linker, and replace it with the adjusted linker we made in chapter 5. We'll also create a link to its counterpart in /tools/$(uname -m)-pc-linux-gnu/bin: root:~/lfs/glibc-2.23/build# mv -v /tools/bin/{ld,ld-old} '/tools/bin/ld' -> '/tools/bin/ld-old' # mv -v /tools/bin/{ld,ld-old} '/tools/bin/ld' -> '/tools/bin/ld-old' root:~/lfs/glibc-2.23/build# mv -v /tools/$(uname -m)-pc-linux-gnu/bin/{ld,ld-old} '/tools/x86_64-pc-linux-gnu/bin/ld' -> '/tools/x86_64-pc-linux-gnu/bin/ld-old' root:~/lfs/glibc-2.23/build# mv -v /tools/bin/{ld-new,ld} '/tools/bin/ld-new' -> '/tools/bin/ld' root:~/lfs/glibc-2.23/build# ln -sv /tools/bin/ld /tools/$(uname -m)-pc-linux-gnu/bin/ld '/tools/x86_64-pc-linux-gnu/bin/ld' -> '/tools/bin/ld' Next, amend the GCC specs file so that it points to the new dynamic linker. Simply deleting all instances of “/tools” should leave us with the correct path to the dynamic linker. Also adjust the specs file so that GCC knows where to find the correct headers and Glibc start files. A sed command accomplishes this: gcc -dumpspecs | sed -e 's@/tools@@g' \ -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \ -e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > \ `dirname $(gcc --print-libgcc-file-name)`/specs It is a good idea to visually inspect the specs file to verify the intended change was actually made. It is imperative at this point to ensure that the basic functions (compiling and linking) of the adjusted toolchain are working as expected. To do this, perform the following sanity checks: echo 'int main(){}' > dummy.c cc dummy.c -v -Wl,--verbose &> dummy.log root:~# readelf -l a.out | grep ': /lib' [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] There should be no errors, and the output of the last command will be (allowing for platform-specific differences in dynamic linker name): [Requesting program interpreter: /lib/ld-linux.so.2] Now make sure that we're setup to use the correct start files: # grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log /usr/lib/../lib64/crt1.o succeeded /usr/lib/../lib64/crti.o succeeded /usr/lib/../lib64/crtn.o succeeded Verify that the compiler is searching for the correct header files: grep -B1 '^ /usr/include' dummy.log #include <...> search starts here: /usr/include Next, verify that the new linker is being used with the correct search paths: # grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g' SEARCH_DIR("=/tools/x86_64-pc-linux-gnu/lib64") SEARCH_DIR("/usr/lib") SEARCH_DIR("/lib") SEARCH_DIR("=/tools/x86_64-pc-linux-gnu/lib"); Next make sure that we're using the correct libc: # grep "/lib.*/libc.so.6 " dummy.log attempt to open /lib64/libc.so.6 succeeded Lastly, make sure GCC is using the correct dynamic linker: # grep found dummy.log found ld-linux-x86-64.so.2 at /lib64/ld-linux-x86-64.so.2 If the output does not appear as shown above or is not received at all, then something is seriously wrong. Investigate and retrace the steps to find out where the problem is and correct it. The most likely reason is that something went wrong with the specs file adjustment. Any issues will need to be resolved before continuing on with the process. Once everything is working correctly, clean up the test files: rm -v dummy.c a.out dummy.log 6.11.1. Installation of Zlib root:~/lfs# tar xf /sources/zlib-1.2.8.tar.xz root:~/lfs# cd zlib-1.2.8/ root:~/lfs/zlib-1.2.8# make root:~/lfs/zlib-1.2.8# make check root:~/lfs/zlib-1.2.8# make install The shared library needs to be moved to /lib, and as a result the .so file in /usr/lib will need to be recreated: mv -v /usr/lib/libz.so.* /lib '/usr/lib/libz.so.1' -> '/lib/libz.so.1' '/usr/lib/libz.so.1.2.8' -> '/lib/libz.so.1.2.8' ln -sfv ../../lib/$(readlink /usr/lib/libz.so) /usr/lib/libz.so '/usr/lib/libz.so' -> '../../lib/libz.so.1.2.8' 6.12.1. Installation of File ./configure --prefix=/usr make make check make install 6.13. Binutils-2.26 6.13.1. Installation of Binutils Verify that the PTYs are working properly inside the chroot environment by performing a simple test: expect -c "spawn ls" This command should output the following: spawn ls # tar xf /sources/binutils-2.26.tar.bz2 root:~/lfs/binutils-2.26# mkdir -v build mkdir: created directory 'build' root:~/lfs/binutils-2.26# patch -Np1 -i ../binutils-2.26-upstream_fix-2.patch patching file bfd/elf32-i386.c patching file bfd/elf64-x86-64.c patching file gas/config/tc-i386.c patching file gas/config.in patching file gas/configure patching file gas/configure.ac patching file ld/configure patching file ld/configure.ac patching file ld/lexsup.c patching file opcodes/i386-dis.c Prepare Binutils for compilation: ../configure --prefix=/usr \ --enable-shared \ --disable-werror make check The test 'Link with zlib-gabi compressed debug output' is known to fail. Install the package: make tooldir=/usr install 6.14.1. Installation of GMP root:~/lfs# tar xf /sources/gmp-6.1.0.tar.xz Prepare GMP for compilation: ./configure --prefix=/usr \ --enable-cxx \ --disable-static \ --docdir=/usr/share/doc/gmp-6.1.0 configure: summary of build options: Version: GNU MP 6.1.0 Host type: haswell-pc-linux-gnu ABI: 64 Install prefix: /usr Compiler: gcc Static libraries: no Shared libraries: yes # make # make html Test the results: make check 2>&1 | tee gmp-check-log Ensure that all 190 tests in the test suite passed. Check the results by issuing the following command: awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log 190 Install the package and its documentation: root:~/lfs/gmp-6.1.0# make install +-------------------------------------------------------------+ | CAUTION: | | | | If you have not already run "make check", then we strongly | | recommend you do so. | | | | GMP has been carefully tested by its authors, but compilers | | are all too often released with serious bugs. GMP tends to | | explore interesting corners in compilers and has hit bugs | | on quite a few occasions. | | | +-------------------------------------------------------------+ make install-html 6.15.1. Installation of MPFR root:~/lfs# tar xf /sources/mpfr-3.1.3.tar.xz root:~/lfs# cp -a /sources/mpfr-3.1.3-upstream_fixes-2.patch . root:~/lfs# cd mpfr-3.1.3 ./configure --prefix=/usr \ --disable-static \ --enable-thread-safe \ make make html make check ============================================================================ Testsuite summary for MPFR 3.1.3 ============================================================================ # TOTAL: 160 # PASS: 159 # SKIP: 1 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ make install make install-html 6.16.1. Installation of MPC root:~/lfs# tar xf /sources/mpc-1.0.3.tar.gz ./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/mpc-1.0.3 make make html make check ============================================================================ Testsuite summary for mpc 1.0.3 ============================================================================ # TOTAL: 64 # PASS: 64 # SKIP: 0 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 ============================================================================ 6.17.1. Installation of GCC root:~/lfs# tar xf /sources/gcc-5.3.0.tar.bz2 root:~/lfs/gcc-5.3.0# mkdir -v build mkdir: created directory 'build' Prepare GCC for compilation: SED=sed \ ../configure --prefix=/usr \ --enable-languages=c,c++ \ --disable-multilib \ --disable-bootstrap \ --with-system-zlib make One set of tests in the GCC test suite is known to exhaust the stack, so increase the stack size prior to running the tests: ulimit -s 32768 make -k check WARNING: Couldn't find the global config file. Test Run By root on Mon May 2 16:48:03 2016 Native configuration is x86_64-unknown-linux-gnu === gcc tests === Schedule of variations: unix To receive a summary of the test suite results, run: ../contrib/test_summary Install the package: make install Some packages expect the C preprocessor to be installed in the /lib directory. To support those packages, create this symlink: ln -sv ../usr/bin/cpp /lib ln -sv gcc /usr/bin/cc Add a compatibility symlink to enable building programs with Link Time Optimization (LTO): # install -v -dm755 /usr/lib/bfd-plugins install: creating directory '/usr/lib/bfd-plugins' Add a compatibility symlink to enable building programs with Link Time Optimization (LTO): install -v -dm755 /usr/lib/bfd-plugins # ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/5.3.0/liblto_plugin.so \ > /usr/lib/bfd-plugins/ '/usr/lib/bfd-plugins/liblto_plugin.so' -> '../../libexec/gcc/x86_64-unknown-linux-gnu/5.3.0/liblto_plugin.so' Now that our final toolchain is in place, it is important to again ensure that compiling and linking will work as expected. We do this by performing the same sanity checks as we did earlier in the chapter: root:~/lfs/gcc-5.3.0/build# echo 'int main(){}' > dummy.c root:~/lfs/gcc-5.3.0/build# cc dummy.c -v -Wl,--verbose &> dummy.log root:~/lfs/gcc-5.3.0/build# readelf -l a.out | grep ': /lib' [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] Now make sure that we're setup to use the correct start files: root:~/lfs/gcc-5.3.0/build# grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log /usr/lib/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../lib64/crt1.o succeeded /usr/lib/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../lib64/crti.o succeeded /usr/lib/gcc/x86_64-unknown-linux-gnu/5.3.0/../../../../lib64/crtn.o succeeded Verify that the compiler is searching for the correct header files: root:~/lfs/gcc-5.3.0/build# grep -B4 '^ /usr/include' dummy.log #include <...> search starts here: /usr/lib/gcc/x86_64-unknown-linux-gnu/5.3.0/include /usr/local/include /usr/lib/gcc/x86_64-unknown-linux-gnu/5.3.0/include-fixed /usr/include Next, verify that the new linker is being used with the correct search paths: root:~/lfs/gcc-5.3.0/build# grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g' SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64") SEARCH_DIR("/usr/local/lib64") SEARCH_DIR("/lib64") SEARCH_DIR("/usr/lib64") SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib") SEARCH_DIR("/usr/local/lib") SEARCH_DIR("/lib") SEARCH_DIR("/usr/lib"); Next make sure that we're using the correct libc: root:~/lfs/gcc-5.3.0/build# grep "/lib.*/libc.so.6 " dummy.log attempt to open /lib64/libc.so.6 succeeded Lastly, make sure GCC is using the correct dynamic linker: root:~/lfs/gcc-5.3.0/build# grep found dummy.log found ld-linux-x86-64.so.2 at /lib64/ld-linux-x86-64.so.2 Finally, move a misplaced file: root:~/lfs/gcc-5.3.0/build# mkdir -pv /usr/share/gdb/auto-load/usr/lib mkdir: created directory '/usr/share/gdb' mkdir: created directory '/usr/share/gdb/auto-load' mkdir: created directory '/usr/share/gdb/auto-load/usr' mkdir: created directory '/usr/share/gdb/auto-load/usr/lib' root:~/lfs/gcc-5.3.0/build# mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib '/usr/lib/libstdc++.so.6.0.21-gdb.py' -> '/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.21-gdb.py' 6.18.1. Installation of Bzip2 root:~/lfs# tar xf /sources/bzip2-1.0.6.tar.gz Apply a patch that will install the documentation for this package: patch -Np1 -i ../bzip2-1.0.6-install_docs-1.patch patching file Makefile The following command ensures installation of symbolic links are relative: sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile Ensure the man pages are installed into the correct location: sed -i "s@(PREFIX)/man@(PREFIX)/share/man@g" Makefile Prepare Bzip2 for compilation with: make -f Makefile-libbz2_so make clean Compile and test the package: make Install the programs: make PREFIX=/usr install Install the shared bzip2 binary into the /bin directory, make some necessary symbolic links, and clean up: cp -v bzip2-shared /bin/bzip2 cp -av libbz2.so* /lib ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so rm -v /usr/bin/{bunzip2,bzcat,bzip2} ln -sv bzip2 /bin/bunzip2 ln -sv bzip2 /bin/bzcat 6.19.1. Installation of Pkg-config root:~/lfs# tar xf /sources/pkg-config-0.29.tar.gz Prepare Pkg-config for compilation: ./configure --prefix=/usr \ --with-internal-glib \ --disable-host-tool \ --docdir=/usr/share/doc/pkg-config-0.29 make make check make install 6.20.1. Installation of Ncurses root:~/lfs/ncurses-6.0# sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in ./configure --prefix=/usr \ --mandir=/usr/share/man \ --with-shared \ --without-debug \ --without-normal \ --enable-pc-files \ --enable-widec ** Configuration summary for NCURSES 6.0 20150808: extended funcs: yes xterm terminfo: xterm-new bin directory: /usr/bin lib directory: /usr/lib include directory: /usr/include man directory: /usr/share/man terminfo directory: /usr/share/terminfo pkg-config directory: /usr/lib/pkgconfig make make install root:~/lfs/ncurses-6.0# mv -v /usr/lib/libncursesw.so.6* /lib '/usr/lib/libncursesw.so.6' -> '/lib/libncursesw.so.6' '/usr/lib/libncursesw.so.6.0' -> '/lib/libncursesw.so.6.0' root:~/lfs/ncurses-6.0# ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so '/usr/lib/libncursesw.so' -> '../../lib/libncursesw.so.6' # for lib in ncurses form panel menu ; do > rm -vf /usr/lib/lib${lib}.so > echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so > ln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pc Finally, make sure that old applications that look for -lcurses at build time are still buildable: rm -vf /usr/lib/libcursesw.so echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so ln -sfv libncurses.so /usr/lib/libcurses.so Finally, make sure that old applications that look for -lcurses at build time are still buildable: rm -vf /usr/lib/libcursesw.so echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so ln -sfv libncurses.so /usr/lib/libcurses.so If desired, install the Ncurses documentation: mkdir -v /usr/share/doc/ncurses-6.0 cp -v -R doc/* /usr/share/doc/ncurses-6.0 root:~/lfs/ncurses-6.0# make distclean 6.21.1. Installation of Attr root:~/lfs# tar xf /sources/attr-2.4.47.src.tar.gz root:~/lfs# cd attr-2.4.47/ Modify the documentation directory so that it is a versioned directory: # sed -i -e 's|/@pkg_name@|&-@pkg_version@|' include/builddefs.in Prevent installation of manual pages that were already installed by the man pages package: sed -i -e "/SUBDIRS/s|man[25]||g" man/Makefile Prepare Attr for compilation: ./configure --prefix=/usr \ --bindir=/bin \ --disable-static make The tests need to be run on a filesystem that supports extended attributes such as the ext2, ext3, or ext4 filesystems. The tests are also known to fail if running multiple simultaneous tests (-j option greater than 1). To test the results, issue: make -j1 tests root-tests Install the package: make install install-dev install-lib chmod -v 755 /usr/lib/libattr.so The shared library needs to be moved to /lib, and as a result the .so file in /usr/lib will need to be recreated: mv -v /usr/lib/libattr.so.* /lib ln -sfv ../../lib/$(readlink /usr/lib/libattr.so) /usr/lib/libattr.so 6.22.1. Installation of Acl root:~/lfs# tar xf /sources/acl-2.2.52.src.tar.gz Modify the documentation directory so that it is a versioned directory: sed -i -e 's|/@pkg_name@|&-@pkg_version@|' include/builddefs.in Fix some broken tests: sed -i "s:| sed.*::g" test/{sbits-restore,cp,misc}.test Additionally, fix a bug that causes getfacl -e to segfault on overly long group name: sed -i -e "/TABS-1;/a if (x > (TABS-1)) x = (TABS-1);" \ libacl/__acl_to_any_text.c Prepare Acl for compilation: ./configure --prefix=/usr \ --bindir=/bin \ --disable-static \ --libexecdir=/usr/lib Compile the package: make Install the package: make install install-dev install-lib chmod -v 755 /usr/lib/libacl.so The shared library needs to be moved to /lib, and as a result the .so file in /usr/lib will need to be recreated: mv -v /usr/lib/libacl.so.* /lib ln -sfv ../../lib/$(readlink /usr/lib/libacl.so) /usr/lib/libacl.so 6.23. Libcap-2.25 lfs:/monster/sources$ wget -c https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.25.tar.xz root:~/lfs# tar xf /sources/libcap-2.25.tar.xz Prevent a static library from being installed: sed -i '/install.*STALIBNAME/d' libcap/Makefile Install the package: make RAISE_SETFCAP=no prefix=/usr install chmod -v 755 /usr/lib/libcap.so The shared library needs to be moved to /lib, and as a result the .so file in /usr/lib will need to be recreated: mv -v /usr/lib/libcap.so.* /lib ln -sfv ../../lib/$(readlink /usr/lib/libcap.so) /usr/lib/libcap.so 6.24.1. Installation of Sed root:~/lfs# tar xf /sources/sed-4.2.2.tar.bz2 ./configure --prefix=/usr --bindir=/bin --htmldir=/usr/share/doc/sed-4.2.2 Compile the package and generate the HTML documentation: make make html To test the results, issue: make check Install the package and its documentation: make install # make -C doc install-html make: Entering directory '/root/lfs/sed-4.2.2/doc' /tools/bin/mkdir -p '/usr/share/doc/sed-4.2.2' /tools/bin/install -c -m 644 sed.html '/usr/share/doc/sed-4.2.2' make: Leaving directory '/root/lfs/sed-4.2.2/doc' 6.25.1. Installation of Shadow root:~/lfs# tar xf /sources/shadow-4.2.1.tar.xz Disable the installation of the groups program and its man pages, as Coreutils provides a better version. Also Prevent the installation of manual pages that were already installed by the man pages package: sed -i 's/groups$(EXEEXT) //' src/Makefile.in find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \; find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \; find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \; Instead of using the default crypt method, use the more secure SHA-512 method of password encryption, which also allows passwords longer than 8 characters. It is also necessary to change the obsolete /var/spool/mail location for user mailboxes that Shadow uses by default to the /var/mail location used currently: Make a minor change to make the default useradd consistent with the LFS groups file: sed -i 's/1000/999/' etc/useradd Prepare Shadow for compilation: root:~/lfs/shadow-4.2.1# ./configure --sysconfdir=/etc --with-group-name-max-length=32 shadow will be compiled with the following features: auditing support: no CrackLib support: no PAM support: no SELinux support: no ACL support: yes Extended Attributes support: yes tcb support (incomplete): no shadow group support: yes S/Key support: no SHA passwords encryption: yes nscd support: yes subordinate IDs support: yes Compile the package: make Install the package: make install Move a misplaced program to its proper location: mv -v /usr/bin/passwd /bin 6.25.2. Configuring Shadow root:~/lfs/shadow-4.2.1# pwconv root:~/lfs/shadow-4.2.1# grpconv CREATE_MAIL_SPOOL=yes This parameter causes useradd to create a mailbox file for the newly created user. useradd will make the group ownership of this file to the mail group with 0660 permissions. If you would prefer that these mailbox files are not created by useradd, issue the following command: sed -i 's/yes/no/' /etc/default/useradd 6.25.3. Setting the root password Choose a password for user root and set it by running: passwd root root:~/lfs/shadow-4.2.1# passwd root Changing password for root Enter the new password (minimum of 5 characters) Please use a combination of upper and lower case letters and numbers. New password: shc522.,. Re-enter new password: ********* passwd: password changed. 6.26.1. Installation of Psmisc ./configure --prefix=/usr make make install mv -v /usr/bin/fuser /bin mv -v /usr/bin/killall /bin 6.27. Procps-ng-3.3.11 lfs:/monster/sources$ wget -c http://sourceforge.net/projects/procps-ng/files/Production/procps-ng-3.3.11.tar.xz root:~/lfs# tar xf /sources/procps-ng-3.3.11.tar.xz ./configure --prefix=/usr \ --exec-prefix= \ --libdir=/usr/lib \ --docdir=/usr/share/doc/procps-ng-3.3.11 \ --disable-static \ --disable-kill Compile the package: make The test suite needs some custom modifications for LFS. Remove the test that fails when scripting does not use a tty device. To run the test suite, run the following commands: sed -i -r 's|(pmap_initname)\\\$|\1|' testsuite/pmap.test/pmap.exp make check Install the package: make install Finally, move essential libraries to a location that can be found if /usr is not mounted. mv -v /usr/lib/libprocps.so.* /lib ln -sfv ../../lib/$(readlink /usr/lib/libprocps.so) /usr/lib/libprocps.so 6.28.1. Installation of E2fsprogs root:~# tar xf /sources/e2fsprogs-1.42.13.tar.gz root:~# cd e2fsprogs-1.42.13/ mkdir -v build Prepare E2fsprogs for compilation: LIBS=-L/tools/lib \ CFLAGS=-I/tools/include \ PKG_CONFIG_PATH=/tools/lib/pkgconfig \ ../configure --prefix=/usr \ --bindir=/bin \ --with-root-prefix="" \ --enable-elf-shlibs \ --disable-libblkid \ --disable-libuuid \ --disable-uuidd \ --disable-fsck make ln -sfv /tools/lib/lib{blk,uu}id.so.1 lib make LD_LIBRARY_PATH=/tools/lib check make install make install-libs chmod -v u+w /usr/lib/{libcom_err,libe2p,libext2fs,libss}.a gunzip -v /usr/share/info/libext2fs.info.gz install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info makeinfo -o doc/com_err.info ../lib/et/com_err.texinfo install -v -m644 doc/com_err.info /usr/share/info install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info 6.29.1. Installation of Iana-Etc root:~/lfs# tar xf /sources/iana-etc-2.30.tar.bz2 root:~/lfs# cd iana-etc-2.30/ root:~/lfs/iana-etc-2.30# make ln -f -s protocol-numbers.dist protocol-numbers gawk --re-interval -f protocols.gawk -v strip=no \ protocol-numbers > protocols ln -f -s port-numbers.dist port-numbers gawk -f services.gawk -v strip=no port-numbers > services root:~/lfs/iana-etc-2.30# make install install -d /etc install -m 644 protocols /etc install -m 644 services /etc 6.30.1. Installation of M4 root:~/lfs# tar xf /sources/m4-1.4.17.tar.xz ./configure --prefix=/usr make make check make install 6.31.1. Installation of Bison root:~/lfs# tar xf /sources/bison-3.0.4.tar.xz ./configure --prefix=/usr --docdir=/usr/share/doc/bison-3.0.4 make make install 6.32.1. Installation of Flex root:~/lfs# tar xf /sources/flex-2.6.0.tar.xz ./configure --prefix=/usr --docdir=/usr/share/doc/flex-2.6.0 make check make install ln -sv flex /usr/bin/lex 6.33.1. Installation of Grep root:~/lfs# tar xf /sources/grep-2.23.tar.xz ./configure --prefix=/usr --bindir=/bin make make check make install 6.34.1. Installation of Readline root:~/lfs# tar xf /sources/readline-6.3.tar.gz root:~/lfs# cd readline-6.3/ patch -Np1 -i ../readline-6.3-upstream_fixes-3.patch patching file display.c patching file input.c patching file misc.c patching file patchlevel patching file readline.c patching file rltypedefs.h patching file util.c ./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/readline-6.3 make SHLIB_LIBS=-lncurses make SHLIB_LIBS=-lncurses install mv -v /usr/lib/lib{readline,history}.so.* /lib ln -sfv ../../lib/$(readlink /usr/lib/libreadline.so) /usr/lib/libreadline.so ln -sfv ../../lib/$(readlink /usr/lib/libhistory.so ) /usr/lib/libhistory.so 6.35.1. Installation of Bash root:~/lfs# tar xf /sources/bash-4.3.30.tar.gz root:~/lfs# cp -a /sources/bash-4.3.30-upstream_fixes-3.patch . Skip down to “Install the package” if not running the test suite. To prepare the tests, ensure that the nobody user can write to the sources tree: chown -Rv nobody . Now, run the tests as the nobody user: su nobody -s /bin/bash -c "PATH=$PATH make tests" *********************************************************** * * /bin/sh: /root/lfs/bash-4.3.30/bashversion: Permission denied * * * *********************************************************** /bin/sh: line 0: cd: ./tests: Not a directory Makefile:863: recipe for target 'tests' failed make: *** [tests] Error 1 Now, run the tests as the nobody user: su nobody -s /bin/bash -c "PATH=$PATH make tests" Install the package and move the main executable to /bin: make install mv -vf /usr/bin/bash /bin Run the newly compiled bash program (replacing the one that is currently being executed): exec /bin/bash --login +h 6.36.1. Installation of Bc root:~/lfs# tar xf /sources/bc-1.06.95.tar.bz2 root:~/lfs# cp -a /sources/bc-1.06.95-memory_leak-1.patch . ./configure --prefix=/usr \ --with-readline \ --mandir=/usr/share/man \ --infodir=/usr/share/info make echo "quit" | ./bc/bc -l Test/checklib.b 6.37.1. Installation of Libtool ./configure --prefix=/usr # make # make check root:~/lfs/libtool-2.4.6# make install 6.38.1. Installation of GDBM root:~/lfs# tar xf /sources/gdbm-1.11.tar.gz ./configure --prefix=/usr \ --disable-static \ --enable-libgdbm-compat make make check make install 6.39.1. Installation of Expat root:~/lfs# tar xf /sources/expat-2.1.0.tar.gz ./configure --prefix=/usr --disable-static make make check make install Libraries have been installed in: /usr/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. install -v -dm755 /usr/share/doc/expat-2.1.0 install -v -m644 doc/*.{html,png,css} /usr/share/doc/expat-2.1.0 6.40.1. Installation of Inetutils ./configure --prefix=/usr \ --localstatedir=/var \ --disable-logger \ --disable-whois \ --disable-rcp \ --disable-rexec \ --disable-rlogin \ --disable-rsh \ --disable-servers Summary of build decisions: Clients: dnsdomainname yes ftp yes /usr/lib/libreadline.so -Wl,-rpath -Wl,/usr/lib hostname yes ifconfig yes logger no ping yes ping6 yes rcp no rexec no rlogin no rsh no talk yes -lcurses telnet yes -lcurses tftp yes traceroute yes whois no Servers: ftpd no inetd no rexecd no rlogind no rshd no syslogd no talkd no telnetd no tftpd no uucpd no make make check make install mv -v /usr/bin/{hostname,ping,ping6,traceroute} /bin '/usr/bin/hostname' -> '/bin/hostname' '/usr/bin/ping' -> '/bin/ping' '/usr/bin/ping6' -> '/bin/ping6' '/usr/bin/traceroute' -> '/bin/traceroute' mv -v /usr/bin/ifconfig /sbin '/usr/bin/ifconfig' -> '/sbin/ifconfig' 6.41.1. Installation of Perl root:~/lfs# tar xf /sources/perl-5.22.1.tar.bz2 First create a basic /etc/hosts file to be referenced in one of Perl's configuration files as well as the optional test suite: echo "127.0.0.1 localhost $(hostname)" > /etc/hosts export BUILD_ZLIB=False export BUILD_BZIP2=0 sh Configure -des -Dprefix=/usr \ -Dvendorprefix=/usr \ -Dman1dir=/usr/share/man/man1 \ -Dman3dir=/usr/share/man/man3 \ -Dpager="/usr/bin/less -isR" \ -Duseshrplib 6.42.1. Installation of XML::Parser root:~/lfs# tar xf /sources/XML-Parser-2.44.tar.gz root:~/lfs# cd XML-Parser-2.44 perl Makefile.PL make make test make install 6.43.1. Installation of Autoconf # tar xf /sources/autoconf-2.69.tar.xz ./configure --prefix=/usr make make check make install 6.44.1. Installation of Automake root:~/lfs# tar xf /sources/automake-1.15.tar.xz First fix a warning that is caused by perl-5.22 and later: sed -i 's:/\\\${:/\\\$\\{:' bin/automake.in ./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.15 make sed -i "s:./configure:LEXLIB=/usr/lib/libfl.a &:" t/lex-{clean,depend}-cxx.sh make -j4 check make install 6.45.1. Installation of Coreutils root:~/lfs# tar xf /sources/coreutils-8.25.tar.xz root:~/lfs# cp -a /sources/coreutils-8.25-i18n-2.patch . root:~/lfs# cd coreutils-8.25 patch -Np1 -i ../coreutils-8.25-i18n-2.patch Now prepare Coreutils for compilation: FORCE_UNSAFE_CONFIGURE=1 ./configure \ --prefix=/usr \ --enable-no-install-program=kill,uptime FORCE_UNSAFE_CONFIGURE=1 make make NON_ROOT_USERNAME=nobody check-root testing: echo "dummy:x:1000:nobody" >> /etc/group chown -Rv nobody . Now run the tests. Make sure the PATH in the su environment includes /tools/bin. su nobody -s /bin/bash \ -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check" Remove the temporary group: sed -i '/dummy/d' /etc/group Install the package: make install Move programs to the locations specified by the FHS: mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin mv -v /usr/bin/{false,ln,ls,mkdir,mknod,mv,pwd,rm} /bin mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin mv -v /usr/bin/chroot /usr/sbin mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8 sed -i s/\"1\"/\"8\"/1 /usr/share/man/man8/chroot.8 mv -v /usr/bin/{head,sleep,nice,test,[} /bin 6.46.1. Installation of Diffutils root:~/lfs# tar xf /sources/diffutils-3.3.tar.xz sed -i 's:= @mkdir_p@:= /bin/mkdir -p:' po/Makefile.in.in ./configure --prefix=/usr make make check make install 6.47.1. Installation of Gawk root:~/lfs# tar xf /sources/gawk-4.1.3.tar.xz ./configure --prefix=/usr make make check make install mkdir -v /usr/share/doc/gawk-4.1.3 cp -v doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-4.1.3 6.48.1. Installation of Findutils root:~/lfs# tar xf /sources/findutils-4.6.0.tar.gz ./configure --prefix=/usr --localstatedir=/var/lib/locate make make check make install mv -v /usr/bin/find /bin sed -i 's|find:=${BINDIR}|find:=/bin|' /usr/bin/updatedb 6.49.1. Installation of Gettext root:~/lfs# tar xf /sources/gettext-0.19.7.tar.xz ./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/gettext-0.19.7 make make check make install chmod -v 0755 /usr/lib/preloadable_libintl.so 6.50.1. Installation of Intltool lfs:/monster/sources$ wget -c http://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz root:~/lfs# tar xf /sources/intltool-0.51.0.tar.gz sed -i 's:\\\${:\\\$\\{:' intltool-update.in ./configure --prefix=/usr make make check make install 6.51.1. Installation of Gperf ./configure --prefix=/usr --docdir=/usr/share/doc/gperf-3.0.4 make make -j1 check make install 6.52.1. Installation of Groff root:~/lfs/groff-1.22.3# PAGE=letter ./configure --prefix=/usr PAGE= ./configure --prefix=/usr make make install 6.53.1. Installation of Xz root:~/lfs# tar xf /sources/xz-5.2.2.tar.xz sed -e '/mf\.buffer = NULL/a next->coder->mf.size = 0;' \ -i src/liblzma/lz/lz_encoder.c ./configure --prefix=/usr \ --disable-static \ --docdir=/usr/share/doc/xz-5.2.2 make make check make install mv -v /usr/bin/{lzma,unlzma,lzcat,xz,unxz,xzcat} /bin mv -v /usr/lib/liblzma.so.* /lib ln -svf ../../lib/$(readlink /usr/lib/liblzma.so) /usr/lib/liblzma.so 6.54.1. Installation of GRUB root:~/lfs# tar xf /sources/grub-2.02~beta2.tar.xz ./configure --prefix=/usr \ --sbindir=/sbin \ --sysconfdir=/etc \ --disable-grub-emu-usb \ --disable-efiemu \ --disable-werror ******************************************************* GRUB2 will be compiled with following components: Platform: i386-pc With devmapper support: No (need libdevmapper header) With memory debugging: No With disk cache statistics: No With boot time statistics: No efiemu runtime: No (explicitly disabled) grub-mkfont: No (need freetype2 library) grub-mount: No (need FUSE library) starfield theme: No (No build-time grub-mkfont) With libzfs support: No (need zfs library) Build-time grub-mkfont: No (need freetype2 library) Without unifont (no build-time grub-mkfont) With liblzma from -llzma (support for XZ-compressed mips images) ******************************************************* make make install 6.55.1. Installation of Less # tar xf /sources/less-481.tar.gz ./configure --prefix=/usr --sysconfdir=/etc make make install 6.56.1. Installation of Gzip root:~/lfs# tar xf /sources/gzip-1.6.tar.xz ./configure --prefix=/usr --bindir=/bin make make check make install mv -v /bin/{gzexe,uncompress,zcmp,zdiff,zegrep} /usr/bin mv -v /bin/{zfgrep,zforce,zgrep,zless,zmore,znew} /usr/bin 6.57.1. Installation of IPRoute2 lfs:/monster/sources$ wget -c https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-4.4.0.tar.xz The arpd program included in this package will not be built since it is dependent on Berkeley DB, which is not installed in LFS. However, documentation files and a directory for arpd will still be installed. Prevent this by running the commands below. If the arpd binary is needed, instructions for compiling Berkeley DB can be found in the BLFS Book at http://www.linuxfromscratch.org/blfs/view/7.9/server/databases.html#db. sed -i /ARPD/d Makefile sed -i 's/arpd.8//' man/man8/Makefile rm -v doc/arpd.sgml Compile the package: make This package comes with a test suite, but due to assumptions it makes, it is not possible to reliably run these tests from within the chroot environment. If you wish to run these tests after booting into your new LFS system, ensure you enable /proc/config.gz support in your kernel ("General setup" -> "Enable access to .config through /proc/config.gz" [CONFIG_IKCONFIG_PROC]), then run 'make alltests' from the testsuite/ subdirectory. Install the package: make DOCDIR=/usr/share/doc/iproute2-4.4.0 install 6.58.1. Installation of Kbd lfs:/monster/sources$ wget -c https://www.kernel.org/pub/linux/utils/kbd/kbd-2.0.3.tar.xz root:~/lfs# tar xf /sources/kbd-2.0.3.tar.xz root:~/lfs# cp -a /sources/kbd-2.0.3-backspace-1.patch . root:~/lfs/kbd-2.0.3# PKG_CONFIG_PATH=/tools/lib/pkgconfig ./configure --prefix=/usr --disable-vlock kbd 2.0.3 ====== prefix: /usr libdir: ${exec_prefix}/lib bindir: ${exec_prefix}/bin datadir: ${datarootdir} compiler: gcc cflags: -g -O2 -Wall -Wextra -Wmissing-noreturn -Wdisabled-optimization -Wcast-align -Wshadow -Wmissing-format-attribute -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations {get,set}keycodes: yes resizecons: no optional progs: no vlock: no libkeymap: no make make check make install mkdir -v /usr/share/doc/kbd-2.0.3 cp -R -v docs/doc/* /usr/share/doc/kbd-2.0.3 6.59.1. Installation of Kmod lfs:/monster/sources$ wget -c https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-22.tar.xz root:~/lfs# tar xf /sources/kmod-22.tar.xz ./configure --prefix=/usr \ --bindir=/bin \ --sysconfdir=/etc \ --with-rootlibdir=/lib \ --with-xz \ --with-zlib make make install root:~/lfs/kmod-22# for target in depmod insmod lsmod modinfo modprobe rmmod; do > ln -sv ../bin/kmod /sbin/$target > done '/sbin/depmod' -> '../bin/kmod' '/sbin/insmod' -> '../bin/kmod' '/sbin/lsmod' -> '../bin/kmod' '/sbin/modinfo' -> '../bin/kmod' '/sbin/modprobe' -> '../bin/kmod' '/sbin/rmmod' -> '../bin/kmod' 6.60. Libpipeline-1.4.1 root:~/lfs# tar xf /sources/libpipeline-1.4.1.tar.gz PKG_CONFIG_PATH=/tools/lib/pkgconfig ./configure --prefix=/usr make make check make install 6.61.1. Installation of Make root:~/lfs# tar xf /sources/make-4.1.tar.bz2 ./configure --prefix=/usr make make check make install 6.62.1. Installation of Patch root:~/lfs# tar xf /sources/patch-2.7.5.tar.xz ./configure --prefix=/usr make make check make install 6.63.1. Installation of Sysklogd root:~/lfs# tar xf /sources/sysklogd-1.5.1.tar.gz sed -i '/Error loading kernel symbols/{n;n;d}' ksym_mod.c make make BINDIR=/sbin install /usr/bin/install -o root -g root -m 644 sysklogd.8 /usr/share/man/man8/sysklogd.8 /usr/bin/install -o root -g root -m 644 syslogd.8 /usr/share/man/man8/syslogd.8 /usr/bin/install -o root -g root -m 644 syslog.conf.5 /usr/share/man/man5/syslog.conf.5 /usr/bin/install -o root -g root -m 644 klogd.8 /usr/share/man/man8/klogd.8 /usr/bin/install -m 500 -s syslogd /sbin/syslogd /usr/bin/install -m 500 -s klogd /sbin/klogd 6.63.2. Configuring Sysklogd Create a new /etc/syslog.conf file by running the following: cat > /etc/syslog.conf << "EOF" # Begin /etc/syslog.conf auth,authpriv.* -/var/log/auth.log *.*;auth,authpriv.none -/var/log/sys.log daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log mail.* -/var/log/mail.log user.* -/var/log/user.log *.emerg * # End /etc/syslog.conf EOF 6.64.1. Installation of Sysvinit root:~/lfs# tar xf /sources/sysvinit-2.88dsf.tar.bz2 root:~/lfs# cp -a /sources/sysvinit-2.88dsf-consolidated-1.patch . patch -Np1 -i ../sysvinit-2.88dsf-consolidated-1.patch make -C src make -C src install 6.65.1. Installation of Tar root:~/lfs# tar xf /sources/tar-1.28.tar.xz Prepare Tar for compilation: FORCE_UNSAFE_CONFIGURE=1 \ ./configure --prefix=/usr \ --bindir=/bin make make check make install make -C doc install-html docdir=/usr/share/doc/tar-1.28 6.66.1. Installation of Texinfo root:~/lfs# tar xf /sources/texinfo-6.1.tar.xz ./configure --prefix=/usr --disable-static make make check make install make TEXMF=/usr/share/texmf install-tex The Info documentation system uses a plain text file to hold its list of menu entries. The file is located at /usr/share/info/dir. Unfortunately, due to occasional problems in the Makefiles of various packages, it can sometimes get out of sync with the info pages installed on the system. If the /usr/share/info/dir file ever needs to be recreated, the following optional commands will accomplish the task: pushd /usr/share/info rm -v dir for f in * do install-info $f dir 2>/dev/null done popd 6.67.1. Installation of Eudev root:~/lfs# tar xf /sources/eudev-3.1.5.tar.gz First, fix a test script: sed -r -i 's|/usr(/bin/test)|\1|' test/udev-test.pl Next, add a workaround to prevent the /tools directory from being hard coded into Eudev binary files library locations: cat > config.cache << "EOF" HAVE_BLKID=1 BLKID_LIBS="-lblkid" BLKID_CFLAGS="-I/tools/include" EOF ./configure --prefix=/usr \ --bindir=/sbin \ --sbindir=/sbin \ --libdir=/usr/lib \ --sysconfdir=/etc \ --libexecdir=/lib \ --with-rootprefix= \ --with-rootlibdir=/lib \ --enable-manpages \ --disable-static \ --config-cache LIBRARY_PATH=/tools/lib make mkdir -pv /lib/udev/rules.d mkdir -pv /etc/udev/rules.d make LD_LIBRARY_PATH=/tools/lib check make LD_LIBRARY_PATH=/tools/lib install root:~/lfs/eudev-3.1.5# tar -xvf /sources/udev-lfs-20140408.tar.bz2 udev-lfs-20140408/ udev-lfs-20140408/Makefile.lfs udev-lfs-20140408/init-net-rules.sh udev-lfs-20140408/83-cdrom-symlinks.rules udev-lfs-20140408/contrib/ udev-lfs-20140408/contrib/debian/ udev-lfs-20140408/contrib/debian/83-cdrom-symlinks.rules udev-lfs-20140408/contrib/debian/81-cdrom.rules udev-lfs-20140408/contrib/debian/write_cd_aliases udev-lfs-20140408/81-cdrom.rules udev-lfs-20140408/55-lfs.rules udev-lfs-20140408/write_cd_rules udev-lfs-20140408/ChangeLog udev-lfs-20140408/README udev-lfs-20140408/write_net_rules udev-lfs-20140408/rule_generator.functions udev-lfs-20140408/55-lfs.txt root:~/lfs/eudev-3.1.5# make -f udev-lfs-20140408/Makefile.lfs install 6.67.2. Configuring Eudev LD_LIBRARY_PATH=/tools/lib udevadm hwdb --update 6.68.2. Installation of Util-linux 6.68.1. FHS compliance notes mkdir -pv /var/lib/hwclock root:~/lfs# tar xf /sources/util-linux-2.27.1.tar.xz 6.68.2. Installation of Util-linux Prepare Util-linux for compilation: ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ --docdir=/usr/share/doc/util-linux-2.27.1 \ --disable-chfn-chsh \ --disable-login \ --disable-nologin \ --disable-su \ --disable-setpriv \ --disable-runuser \ --disable-pylibmount \ --disable-static \ --without-python \ --without-systemd \ --without-systemdsystemunitdir make make install 6.69.1. Installation of Man-DB root:~/lfs# tar xf /sources/man-db-2.7.5.tar.xz ./configure --prefix=/usr \ --docdir=/usr/share/doc/man-db-2.7.5 \ --sysconfdir=/etc \ --disable-setuid \ --with-browser=/usr/bin/lynx \ --with-vgrind=/usr/bin/vgrind \ --with-grap=/usr/bin/grap make make check make install 6.70.1. Installation of Vim root:~/lfs# tar xf /sources/vim-7.4.tar.bz2 First, change the default location of the vimrc configuration file to /etc: echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h ./configure --prefix=/usr make make -j1 test make install Many users are used to using vi instead of vim. To allow execution of vim when users habitually enter vi, create a symlink for both the binary and the man page in the provided languages: ln -sv vim /usr/bin/vi for L in /usr/share/man/{,*/}man1/vim.1; do ln -sv vim.1 $(dirname $L)/vi.1 done By default, Vim's documentation is installed in /usr/share/vim. The following symlink allows the documentation to be accessed via /usr/share/doc/vim-7.4, making it consistent with the location of documentation for other packages: ln -sv ../vim/vim74/doc /usr/share/doc/vim-7.4 6.72. Stripping Again (20160504) If the intended user is not a programmer and does not plan to do any debugging on the system software, the system size can be decreased by about 90 MB by removing the debugging symbols from binaries and libraries. This causes no inconvenience other than not being able to debug the software fully anymore. Most people who use the command mentioned below do not experience any difficulties. However, it is easy to make a typo and render the new system unusable, so before running the strip command, it is a good idea to make a backup of the LFS system in its current state. Before performing the stripping, take special care to ensure that none of the binaries that are about to be stripped are running. If unsure whether the user entered chroot with the command given in Section 6.4, “Entering the Chroot Environment,” first exit from chroot: Then reenter it with: chroot $LFS /tools/bin/env -i \ HOME=/root TERM=$TERM PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ /tools/bin/bash --login Now the binaries and libraries can be safely stripped: /tools/bin/find /{,usr/}{bin,lib,sbin} -type f \ -exec /tools/bin/strip --strip-debug '{}' ';' 6.73. Cleaning Up Finally, clean up some extra files left around from running tests: rm -rf /tmp/* From now on, when reentering the chroot environment after exiting, use the following modified chroot command: chroot "$LFS" /usr/bin/env -i \ HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin \ /bin/bash --login The reason for this is that the programs in /tools are no longer needed. Since they are no longer needed you can delete the /tools directory if so desired. Finally, there were several static libraries that were not suppressed earlier in the chapter in order to satisfy the regression tests in several packages. These libraries are from binutils, bzip2, e2fsprogs, flex, libtool, and zlib. If desired, remove them now: rm -f /usr/lib/lib{bfd,opcodes}.a rm -f /usr/lib/libbz2.a rm -f /usr/lib/lib{com_err,e2p,ext2fs,ss}.a rm -f /usr/lib/libltdl.a rm -f /usr/lib/libfl.a rm -f /usr/lib/libfl_pic.a rm -f /usr/lib/libz.a 7.2.1. Installation of LFS-Bootscripts root:/sources# tar xf /sources/lfs-bootscripts-20150222.tar.bz2 ================================================================================================================================ II. Parte backup /tools into lfs userspace $ mkdir tools.ori lfs:~/tools.ori$ rsync -avP /tools/ . Compilación de fuentes linkeados a toolchain: root:/opt# mkdir lfs/{usr,bin,sbin} root:/opt# chown -R lfs:lfs lfs 6.2. Preparing Virtual Kernel File Systems lfs:~/sources/gcc-5.3.0/build$ export LFS=/opt/lfs lfs:~/sources/gcc-5.3.0/build$ mkdir -pv $LFS/{dev,proc,sys,run} mkdir: created directory '/opt/lfs/dev' mkdir: created directory '/opt/lfs/proc' mkdir: created directory '/opt/lfs/sys' mkdir: created directory '/opt/lfs/run' 6.5. Creating Directories lfs:/$ mkdir -pv $LFS/{bin,boot,etc/{opt,sysconfig},home,lib/firmware,mnt,opt} mkdir: created directory '/opt/lfs/boot' mkdir: created directory '/opt/lfs/etc' mkdir: created directory '/opt/lfs/etc/opt' mkdir: created directory '/opt/lfs/etc/sysconfig' mkdir: created directory '/opt/lfs/home' mkdir: created directory '/opt/lfs/lib' mkdir: created directory '/opt/lfs/lib/firmware' mkdir: created directory '/opt/lfs/mnt' mkdir: created directory '/opt/lfs/opt' lfs:/$ mkdir -pv $LFS/{media/{floppy,cdrom},sbin,srv,var} mkdir: created directory '/opt/lfs/media' mkdir: created directory '/opt/lfs/media/floppy' mkdir: created directory '/opt/lfs/media/cdrom' mkdir: created directory '/opt/lfs/srv' mkdir: created directory '/opt/lfs/var' lfs:/$ install -dv -m 0750 $LFS/root lfs:/$ install -dv -m 1777 $LFS/tmp $LFS/var/tmp install: creating directory '/opt/lfs/tmp' install: creating directory '/opt/lfs/var/tmp' lfs:/$ mkdir -pv $LFS/usr/{,local/}{bin,include,lib,sbin,src} mkdir: created directory '/opt/lfs/usr/bin' mkdir: created directory '/opt/lfs/usr/include' mkdir: created directory '/opt/lfs/usr/lib' mkdir: created directory '/opt/lfs/usr/sbin' mkdir: created directory '/opt/lfs/usr/src' mkdir: created directory '/opt/lfs/usr/local' mkdir: created directory '/opt/lfs/usr/local/bin' mkdir: created directory '/opt/lfs/usr/local/include' mkdir: created directory '/opt/lfs/usr/local/lib' mkdir: created directory '/opt/lfs/usr/local/sbin' mkdir: created directory '/opt/lfs/usr/local/src' lfs:/$ mkdir -pv $LFS/usr/{,local/}share/{color,dict,doc,info,locale,man} mkdir: created directory '/opt/lfs/usr/share' mkdir: created directory '/opt/lfs/usr/share/color' mkdir: created directory '/opt/lfs/usr/share/dict' mkdir: created directory '/opt/lfs/usr/share/doc' mkdir: created directory '/opt/lfs/usr/share/info' mkdir: created directory '/opt/lfs/usr/share/locale' mkdir: created directory '/opt/lfs/usr/share/man' mkdir: created directory '/opt/lfs/usr/local/share' mkdir: created directory '/opt/lfs/usr/local/share/color' mkdir: created directory '/opt/lfs/usr/local/share/dict' mkdir: created directory '/opt/lfs/usr/local/share/doc' mkdir: created directory '/opt/lfs/usr/local/share/info' mkdir: created directory '/opt/lfs/usr/local/share/locale' mkdir: created directory '/opt/lfs/usr/local/share/man' lfs:/$ mkdir -v $LFS/usr/{,local/}share/{misc,terminfo,zoneinfo} mkdir: created directory '/opt/lfs/usr/share/misc' mkdir: created directory '/opt/lfs/usr/share/terminfo' mkdir: created directory '/opt/lfs/usr/share/zoneinfo' mkdir: created directory '/opt/lfs/usr/local/share/misc' mkdir: created directory '/opt/lfs/usr/local/share/terminfo' mkdir: created directory '/opt/lfs/usr/local/share/zoneinfo' lfs:/$ mkdir -v $LFS/usr/libexec mkdir: created directory '/opt/lfs/usr/libexec' lfs:/$ mkdir -pv $LFS/usr/{,local/}share/man/man{1..8} mkdir: created directory '/opt/lfs/usr/share/man/man1' mkdir: created directory '/opt/lfs/usr/share/man/man2' mkdir: created directory '/opt/lfs/usr/share/man/man3' mkdir: created directory '/opt/lfs/usr/share/man/man4' mkdir: created directory '/opt/lfs/usr/share/man/man5' mkdir: created directory '/opt/lfs/usr/share/man/man6' mkdir: created directory '/opt/lfs/usr/share/man/man7' mkdir: created directory '/opt/lfs/usr/share/man/man8' mkdir: created directory '/opt/lfs/usr/local/share/man/man1' mkdir: created directory '/opt/lfs/usr/local/share/man/man2' mkdir: created directory '/opt/lfs/usr/local/share/man/man3' mkdir: created directory '/opt/lfs/usr/local/share/man/man4' mkdir: created directory '/opt/lfs/usr/local/share/man/man5' mkdir: created directory '/opt/lfs/usr/local/share/man/man6' mkdir: created directory '/opt/lfs/usr/local/share/man/man7' mkdir: created directory '/opt/lfs/usr/local/share/man/man8' root:/home/lfs# mkdir /opt/lfs/usr/local/lib64 root:/home/lfs# chown lfs:lfs /opt/lfs/usr/local/lib64 '/opt/lfs/usr/local/lib64/lib' -> 'lib' '/opt/lfs/usr/local/lib64/lib64' -> '/opt/lfs/lib64' '/opt/lfs/usr/local/lib64/ln' -> 'ln' ln: failed to create symbolic link '/opt/lfs/usr/local/lib64/lib': File exists ln: failed to create symbolic link '/opt/lfs/usr/local/lib64/lib64': File exists ln: failed to create symbolic link '/opt/lfs/usr/local/lib64/ln': File exists ln: failed to create symbolic link '/opt/lfs/usr/local/lib64/lib': File exists lfs:~$ case $(uname -m) in x86_64) \ ln -sv lib $LFS/lib64; \ ln -sv lib $LFS/usr/lib64; \ ln -sv lib $LFS/usr/local/lib64 ;; esac '/opt/lfs/lib64' -> 'lib' '/opt/lfs/usr/lib64' -> 'lib' '/opt/lfs/usr/local/lib64/lib' -> 'lib' lfs:~$ mkdir -v $LFS/var/{log,mail,spool} mkdir: created directory '/opt/lfs/var/log' mkdir: created directory '/opt/lfs/var/mail' mkdir: created directory '/opt/lfs/var/spool' lfs:~$ ln -sv $LFS/run/lock $LFS/var/lock '/opt/lfs/var/lock' -> '/opt/lfs/run/lock' lfs:~$ mkdir -pv $LFS/var/{opt,cache,lib/{color,misc,locate},local} mkdir: created directory '/opt/lfs/var/opt' mkdir: created directory '/opt/lfs/var/cache' mkdir: created directory '/opt/lfs/var/lib' mkdir: created directory '/opt/lfs/var/lib/color' mkdir: created directory '/opt/lfs/var/lib/misc' mkdir: created directory '/opt/lfs/var/lib/locate' mkdir: created directory '/opt/lfs/var/local' 6.6. Creating Essential Files and Symlinks lfs:~$ ln -sv /tools/bin/{bash,cat,echo,pwd,stty} $LFS/bin '/opt/lfs/bin/bash' -> '/tools/bin/bash' '/opt/lfs/bin/cat' -> '/tools/bin/cat' '/opt/lfs/bin/echo' -> '/tools/bin/echo' '/opt/lfs/bin/pwd' -> '/tools/bin/pwd' '/opt/lfs/bin/stty' -> '/tools/bin/stty' lfs:~$ ln -sv /tools/lib/libgcc_s.so{,.1} $LFS/usr/lib '/opt/lfs/usr/lib/libgcc_s.so' -> '/tools/lib/libgcc_s.so' '/opt/lfs/usr/lib/libgcc_s.so.1' -> '/tools/lib/libgcc_s.so.1' lfs:~$ ln -sv /tools/lib/libstdc++.so{,.6} $LFS/usr/lib '/opt/lfs/usr/lib/libstdc++.so' -> '/tools/lib/libstdc++.so' '/opt/lfs/usr/lib/libstdc++.so.6' -> '/tools/lib/libstdc++.so.6' lfs:~$ sed 's/tools/opt\/lfs\/usr/' /tools/lib/libstdc++.la > $LFS/usr/lib/libstdc++.la lfs:~$ ln -sv bash $LFS/bin/sh '/opt/lfs/bin/sh' -> 'bash' lfs:~$ touch $LFS/var/log/{btmp,lastlog,wtmp} lfs:~$ sudo chgrp -v utmp $LFS/var/log/lastlog changed group of '/opt/lfs/var/log/lastlog' from lfs to utmp lfs:~$ sudo chmod -v 664 /var/log/lastlog mode of '/var/log/lastlog' changed from 0644 (rw-r--r--) to 0664 (rw-rw-r--) lfs:~$ sudo chmod -v 600 /var/log/btmp mode of '/var/log/btmp' retained as 0600 (rw-------) 6.7.1. Installation of Linux API Headers make mrproper make INSTALL_HDR_PATH=dest headers_install find dest/include \( -name .install -o -name ..install.cmd \) -delete cp -rv dest/include/* /usr/include 6.9.1. Installation of Glibc lfs:~/sources/glibc-2.23$ rm -fR * lfs:~/sources/glibc-2.23$ cd .. lfs:~/sources$ tar -xf /monster/sources/glibc-2.23.tar.xz lfs:~/sources$ cd glibc-2.23/ lfs:~/sources/glibc-2.23$ mkdir -v build mkdir: created directory 'build' lfs:~/sources/glibc-2.23/build$ ../configure --prefix=/opt/lfs/usr --disable-profile --enable-kernel=2.6.32 --enable-obsolete-rpc lfs:~/sources/glibc-2.23/build$ make lfs:~/sources/glibc-2.23/build$ make check lfs:~/sources/glibc-2.23/build$ touch $LFS/etc/ld.so.conf lfs:~/sources/glibc-2.23/build$ cp -v ../nscd/nscd.conf $LFS/etc/nscd.conf '../nscd/nscd.conf' -> '/opt/lfs/etc/nscd.conf' lfs:~/sources/glibc-2.23/build$ mkdir -pv $LFS/var/cache/nscd lfs:~/sources/glibc-2.23/build$ mkdir -pv $LFS/usr/lib/locale mkdir: created directory '/opt/lfs/usr/lib/locale' lfs:/tools/lib$ mkdir locale lfs:~$ localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8 lfs:~$ localedef -i de_DE -f ISO-8859-1 de_DE lfs:~$ localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro lfs:~$ localedef -i de_DE -f UTF-8 de_DE.UTF-8 lfs:~$ localedef -i en_GB -f UTF-8 en_GB.UTF-8 lfs:~$ localedef -i en_HK -f ISO-8859-1 en_HK lfs:~$ localedef -i en_PH -f ISO-8859-1 en_PH lfs:~$ localedef -i en_US -f ISO-8859-1 en_US lfs:~$ localedef -i en_US -f UTF-8 en_US.UTF-8 lfs:~$ localedef -i es_MX -f ISO-8859-1 es_MX lfs:~$ localedef -i fa_IR -f UTF-8 fa_IR lfs:~$ localedef -i fr_FR -f ISO-8859-1 fr_FR lfs:~$ localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro lfs:~$ localedef -i fr_FR -f UTF-8 fr_FR.UTF-8 lfs:~$ localedef -i it_IT -f ISO-8859-1 it_IT lfs:~$ localedef -i it_IT -f UTF-8 it_IT.UTF-8 lfs:~$ localedef -i ja_JP -f EUC-JP ja_JP lfs:~$ localedef -i ru_RU -f KOI8-R ru_RU.KOI8-R lfs:~$ localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 lfs:~$ localedef -i tr_TR -f UTF-8 tr_TR.UTF-8 lfs:~$ localedef -i zh_CN -f GB18030 zh_CN.GB18030 6.9.2.3. Configuring the Dynamic Loader $ cat > $LFS/etc/ld.so.conf << "EOF" > # Begin /etc/ld.so.conf > /opt/lfs/usr/local/lib > /opt/lfs/opt/lib lfs:~/sources/glibc-2.23/build$ mkdir -pv $LFS/etc/ld.so.conf.d lfs:~/sources/glibc-2.23/build$ cp $LFS/etc/ld.so.conf /opt/lfs/usr/etc/ lfs:~/sources/glibc-2.23/build$ make install ========================================================================================== 6.10. Adjusting the Toolchain First, backup the /tools linker, and replace it with the adjusted linker we made in chapter 5. We'll also create a link to its counterpart in /tools/$(uname -m)-pc-linux-gnu/bin: lfs:~$ mv -v /tools/bin/{ld,ld-old} '/tools/bin/ld' -> '/tools/bin/ld-old' lfs:~$ mv -v /tools/$(uname -m)-pc-linux-gnu/bin/{ld,ld-old} '/tools/x86_64-pc-linux-gnu/bin/ld' -> '/tools/x86_64-pc-linux-gnu/bin/ld-old' lfs:~$ mv -v /tools/bin/{ld-new,ld} '/tools/bin/ld-new' -> '/tools/bin/ld' lfs:~$ ln -sv /tools/bin/ld /tools/$(uname -m)-pc-linux-gnu/bin/ld '/tools/x86_64-pc-linux-gnu/bin/ld' -> '/tools/bin/ld' Next, amend the GCC specs file so that it points to the new dynamic linker. Simply deleting all instances of “/tools” should leave us with the correct path to the dynamic linker. Also adjust the specs file so that GCC knows where to find the correct headers and Glibc start files. A sed command accomplishes this: gcc -dumpspecs | sed -e 's@/tools@@g' \ -e '/\*startfile_prefix_spec:/{n;s@.*@/opt/lfs/usr/lib/ @}' \ -e '/\*cpp:/{n;s@$@ -isystem /opt/lfs/usr/include@}' > \ `dirname $(gcc --print-libgcc-file-name)`/specs editar gcc::specs: lfs:~/sources/binutils-2.26/build$ vi /monster/tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/5.3.0/specs en *link::%{m16|m32|mx32:;:-dynamic-linker ajustar /lib64/ld-linux-x86-64.so.2 por /opt/lfs/lib64/ld-linux-x86-64.so.2 %{m16|m32|mx32:;:-dynamic-linker %{muclibc:/lib/ld64-uClibc.so.0;:%{mbionic:/system/bin/linker64;:/opt/lfs/lib64/ld-linux-x86-64.so.2}}} %{m16|m32|mx32:;:-dynamic-linker %{muclibc:/lib/ld64-uClibc.so.0;:%{mbionic:/system/bin/linker64;:/opt/lfs/lib64/ld-linux-x86-64.so.2}}} lfs:~/sources/binutils-2.26/build$ cp -a /tools/lib64/ld-linux-x86-64.so.2 /opt/lfs/lib64/ lfs:~/sources/binutils-2.26/build$ cp -a /tools/lib64/ld-2.23.so /opt/lfs/lib64/ lfs:~/sources/binutils-2.26/build$ ldd a.out linux-vdso.so.1 (0x00007fff2fbde000) libc.so.6 => /tools/lib/libc.so.6 (0x00007f1694619000) /opt/lfs/lib64/ld-linux-x86-64.so.2 (0x00007f16949ba000) copiar libc.so.6 tambien a esa ruta: lfs:~/sources/binutils-2.26/build$ cp -a /tools/lib64/libc.so.6 /opt/lfs/lib64/ lfs:~/sources/binutils-2.26/build$ cp -a /tools/lib64/libc-2.23.so /opt/lfs/lib64/ ================================================================================================ 6.11.1. Installation of Zlib 6.12.1. Installation of File lfs:~/sources/file-5.25$ ./configure --prefix=/opt/lfs/usr 6.13.1. Installation of Binutils lfs:~/sources/binutils-2.26/build$ ../configure --prefix=/opt/lfs/usr --enable-shared --disable-werror lfs:~/sources/binutils-2.26/build$ make tooldir=/opt/lfs/usr lfs:~/sources/binutils-2.26/build$ make check lfs:~/sources/binutils-2.26/build$ make tooldir=/opt/lfs/usr install lfs:~/sources/binutils-2.26/build$ /opt/lfs/usr/bin/ldd /opt/lfs/usr/bin/readelf linux-vdso.so.1 (0x00007ffdb2180000) libdl.so.2 => /tools/lib/libdl.so.2 (0x00007fb704b65000) libc.so.6 => /tools/lib/libc.so.6 (0x00007fb7047c4000) /tools/lib64/ld-linux-x86-64.so.2 (0x00007fb704d69000) 6.14.1. Installation of GMP ./configure --prefix=/opt/lfs/usr \ --enable-cxx \ --disable-static \ --docdir=/opt/lfs/usr/share/doc/gmp-6.1.0 configure: summary of build options: Version: GNU MP 6.1.0 Host type: haswell-pc-linux-gnu ABI: 64 Install prefix: /opt/lfs/usr Compiler: gcc Static libraries: no Shared libraries: yes make make html make check 2>&1 | tee gmp-check-log lfs:~/sources/gmp-6.1.0$ awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log 190 make install make install-html 6.15.1. Installation of MPFR lfs:~/sources$ tar -xf /monster/sources/mpfr-3.1.3.tar.xz lfs:~/sources/mpfr-3.1.3$ patch -Np1 -i /monster/sources/mpfr-3.1.3-upstream_fixes-2.patch patching file doc/mpfr.info patching file doc/mpfr.texi patching file PATCHES patching file src/div_2si.c patching file src/div_2ui.c patching file src/div.c patching file src/div_ui.c patching file src/fits_intmax.c patching file src/fits_s.h patching file src/fits_u.h patching file src/frexp.c patching file src/jyn_asympt.c patching file src/lngamma.c patching file src/mpfr.h patching file src/mul_2si.c patching file src/mulders.c patching file src/mul_ui.c patching file src/root.c patching file src/round_p.c patching file src/round_prec.c patching file src/si_op.c patching file src/sqrt.c patching file src/ui_div.c patching file src/version.c patching file src/zeta.c patching file tests/tcan_round.c patching file tests/tdiv.c patching file tests/tfits.c patching file tests/tfrexp.c patching file tests/tj0.c patching file tests/tlngamma.c patching file tests/tmul_2exp.c patching file tests/troot.c patching file tests/tsqrt.c patching file tests/tzeta.c patching file VERSION ./configure --prefix=/opt/lfs/usr \ --disable-static \ --enable-thread-safe \ --docdir=/opt/lfs/usr/share/doc/mpfr-3.1.3 error: configure: error: gmp.h can't be found, or is unusable. fix: agregar: --with-gmp=/opt/lfs/usr make make html make check make install make install-html ===================================================== OpenMPI: lfs:~/sources/openmpi-1.10.2/build$ ../configure --build=x86_64-unknown-linux-gnu --prefix=/opt/lfs/usr lfs:~/sources/openmpi-1.10.2/build$ make all install Munge https://github.com/dun/munge/wiki/Installation-Guide#starting-the-daemon lfs:~/sources/munge-0.5.12$ ./configure --prefix=/opt/lfs/usr --with-openssl-prefix=/opt/lfs/usr --sysconfdir=/etc May 19 14:06:32 sullivan.dimar.mil.co systemd[1]: Starting MUNGE authentication service... May 19 14:06:32 sullivan.dimar.mil.co munged[3682]: Running on "sullivan.dimar.mil.co" (10.0.3.2) May 19 14:06:32 sullivan.dimar.mil.co systemd[1]: munge.service: control process exited, code=exited status=1 May 19 14:06:32 sullivan.dimar.mil.co systemd[1]: Failed to start MUNGE authentication service. May 19 14:06:32 sullivan.dimar.mil.co systemd[1]: Unit munge.service entered failed state. May 19 14:06:32 sullivan.dimar.mil.co systemd[1]: munge.service failed. generar munge.key: [root@sullivan wilderman]# dd if=/dev/random bs=1 count=1024 >/etc/munge/munge.key [root@sullivan wilderman]# chown munge:munge /etc/munge/munge.key [root@sullivan wilderman]# chmod 0400 /etc/munge/munge.key systemctl start munge systemctl edit --system --full munge This command will perform the following actions: Copy munge.service to /etc/systemd/system/munge.service Invoke an editor on this new munge.service file Reload the systemd configuration afterwards While in the editor, append either --syslog or --force to the ExecStart line: ExecStart=/usr/sbin/munged --syslog errores [root@sullivan wilderman]# ccze | tail -f /var/log/munge/munged.log 2016-05-19 15:20:50 -0500 Error: Keyfile must be at least 32 bytes 2016-05-19 15:26:43 -0500 Notice: Running on "sullivan.dimar.mil.co" (10.0.3.2) 2016-05-19 15:26:43 -0500 Info: PRNG seeded with 1024 bytes from "/dev/urandom" 2016-05-19 15:26:43 -0500 Error: Keyfile must be at least 32 bytes 2016-05-19 16:22:29 -0500 Notice: Running on "sullivan.dimar.mil.co" (10.0.3.2) 2016-05-19 16:22:29 -0500 Info: PRNG seeded with 1024 bytes from "/dev/urandom" 2016-05-19 16:22:29 -0500 Error: Keyfile must be at least 32 bytes 2016-05-19 16:22:31 -0500 Notice: Running on "sullivan.dimar.mil.co" (10.0.3.2) 2016-05-19 16:22:31 -0500 Info: PRNG seeded with 1024 bytes from "/dev/urandom" 2016-05-19 16:22:31 -0500 Error: Keyfile must be at least 32 bytes compilacion MUNGE: lfs:~/sources/munge-0.5.12$ ./configure --prefix=/opt/lfs/usr --with-openssl-prefix=/opt/lfs/usr --sysconfdir=/etc Edit src/libcommon/munge_defs.h to customize values if necessary. To compile the software, execute the following command; note that "make install" will require root privileges: $ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var && make && sudo make install lfs:~/sources/munge-0.5.12$ sudo systemctl start munge.service * munge.service - MUNGE authentication service Loaded: loaded (/etc/systemd/system/munge.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2016-05-19 18:23:42 COT; 2s ago Docs: man:munged(8) Process: 13179 ExecStart=/opt/lfs/usr/sbin/munged (code=exited, status=0/SUCCESS) Main PID: 13181 (munged) CGroup: /system.slice/munge.service `-13181 /opt/lfs/usr/sbin/munged May 19 18:23:42 sullivan.dimar.mil.co systemd[1]: Starting MUNGE authentication service... May 19 18:23:42 sullivan.dimar.mil.co systemd[1]: Started MUNGE authentication service. lfs:~/sources/munge-0.5.12$ which munge /opt/lfs/usr/bin/munge lfs:~/sources/munge-0.5.12$ which munged /opt/lfs/usr/sbin/munged Grab some pseudorandom data (recommended for the impatient): root:/etc/munge# dd if=/dev/urandom bs=1 count=1024 >/etc/munge/munge.key root:/etc/munge# systemctl status munge.service * munge.service - MUNGE authentication service Loaded: loaded (/etc/systemd/system/munge.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since Thu 2016-05-19 18:08:26 COT; 26s ago Docs: man:munged(8) Process: 8720 ExecStart=/opt/lfs/usr/sbin/munged (code=exited, status=1/FAILURE) May 19 18:08:26 sullivan.dimar.mil.co systemd[1]: Starting MUNGE authentication service... May 19 18:08:26 sullivan.dimar.mil.co munged[8720]: munged: Error: Failed to check logfile "/opt/lfs/usr/var/log/munge/munged.log": Permission denied May 19 18:08:26 sullivan.dimar.mil.co systemd[1]: munge.service: control process exited, code=exited status=1 May 19 18:08:26 sullivan.dimar.mil.co systemd[1]: Failed to start MUNGE authentication service. May 19 18:08:26 sullivan.dimar.mil.co systemd[1]: Unit munge.service entered failed state. May 19 18:08:26 sullivan.dimar.mil.co systemd[1]: munge.service failed. root:/etc/munge# systemctl start munge.service !!!finalmente corriendo munged root:/etc/munge# systemctl status munge.service * munge.service - MUNGE authentication service Loaded: loaded (/etc/systemd/system/munge.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2016-05-19 18:11:56 COT; 13s ago Docs: man:munged(8) Process: 8756 ExecStart=/usr/sbin/munged (code=exited, status=0/SUCCESS) Main PID: 8758 (munged) CGroup: /system.slice/munge.service `-8758 /usr/sbin/munged May 19 18:11:56 sullivan.dimar.mil.co systemd[1]: Starting MUNGE authentication service... May 19 18:11:56 sullivan.dimar.mil.co systemd[1]: Started MUNGE authentication service. verifica PID: root:/etc/munge# ps aux | grep munged munge 8758 0.0 0.0 175836 1984 ? Sl 18:11 0:00 /usr/sbin/munged Check if a credential can be locally decoded: root:/etc/munge# /usr/bin/munge -n | /usr/bin/unmunge STATUS: Success (0) ENCODE_HOST: sullivan.dimar.mil.co (10.0.3.2) ENCODE_TIME: 2016-05-19 18:16:11 -0500 (1463699771) DECODE_TIME: 2016-05-19 18:16:11 -0500 (1463699771) TTL: 300 CIPHER: aes128 (4) MAC: sha1 (3) ZIP: none (0) UID: root (0) GID: root (0) LENGTH: 0 ====================================================================================================== ======================================================================== Scalable Checkpoint / Restart (SCR) Library ======================================================================== The Scalable Checkpoint / Restart (SCR) library enables MPI applications to utilize distributed storage on Linux clusters to attain high file I/O bandwidth for checkpointing and restarting large-scale jobs. With SCR, jobs run more efficiently, recompute less work upon a failure, and reduce load on critical shared resources such as the parallel file system. Detailed usage is provided in the user manual: doc/scr_users_manual.pdf ----------------------------- Dependencies ----------------------------- SCR depends on a number of other software packages. Required: pdsh -- parallel remote shell command (pdsh, dshbak) http://sourceforge.net/projects/pdsh e.g., wget http://downloads.sourceforge.net/project/pdsh/pdsh/pdsh-2.18/pdsh-2.18.tar.bz2 bunzip2 pdsh-2.18.tar.bz2 tar -xf pdsh-2.18.tar pushd pdsh-2.18 ./configure --prefix=/tmp make make install Date::Manip -- Perl module for date/time interpretation http://search.cpan.org/~sbeck/Date-Manip-5.54/lib/Date/Manip.pod SLURM -- resource manager http://sourceforge.net/projects/slurm Optional: libyogrt -- your one get remaining time library Not currently available outside of LLNL. Enables a running job to determine how much time it has left in its resource allocation. io-watchdog -- tool to catch and terminate hanging jobs http://code.google.com/p/io-watchdog PDSH: lfs:~/sources$ tar xf ../spoa.new/pdsh-2.18.tar.bz2 lfs:~/sources/pdsh-2.18$ ./configure --build=x86_64-unknown-linux-gnu --prefix=/opt/lfs --with-ssh --with-slurm Instalacion de librerias y desarrollo MariaDB: lfs:~/sources/pdsh-2.18$ sudo yum install mariadb-libs mariadb-devel CPAN::Date::Manip lfs:~$ cpan Date::Manip ... .. . Appending installation info to /tools/lib/perl5/5.22.1/x86_64-linux/perllocal.pod SBECK/Date-Manip-6.53.tar.gz /tools/bin/make install -- OK JSON: https://github.com/json-c/json-c/wiki json-c Building on Unix with git, gcc and autotools Home page for json-c: https://github.com/json-c/json-c/wiki Caution: do NOT use sources from svn.metaparadigm.com, they are old. Prerequisites: gcc, clang, or another C compiler libtool If you're not using a release tarball, you'll also need: autoconf (autoreconf) automake Make sure you have a complete libtool install, including libtoolize. json-c GitHub repo: https://github.com/json-c/json-c $ git clone https://github.com/json-c/json-c.git $ cd json-c $ sh autogen.sh followed by $ ./configure $ make $ make install To build and run the test programs: $ make check lfs:~/git/json-c$ sh autogen.sh autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal -I autoconf-archive/m4 autoreconf: configure.ac: tracing autoreconf: running: libtoolize --copy libtoolize: putting auxiliary files in '.'. libtoolize: copying file './ltmain.sh' libtoolize: Consider adding 'AC_CONFIG_MACRO_DIRS([m4])' to configure.ac, libtoolize: and rerunning libtoolize and aclocal. libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am. autoreconf: running: /tools/bin/autoconf --include=autoconf-archive/m4 autoreconf: running: /tools/bin/autoheader --include=autoconf-archive/m4 autoreconf: running: automake --add-missing --copy --no-force configure.ac:32: installing './compile' configure.ac:78: installing './config.guess' configure.ac:78: installing './config.sub' configure.ac:6: installing './install-sh' configure.ac:6: installing './missing' Makefile.am: installing './INSTALL' Makefile.am: installing './depcomp' parallel-tests: installing './test-driver' autoreconf: Leaving directory `.' lfs:~/sources/json-c$ CFLAGS=-Wno-error=unused-but-set-variable ./configure --prefix=/opt/lfs --build=x86_64-unknown-linux-gnu SLURM WEB: lfs:~/git$ git clone https://github.com/edf-hpc/slurm-web.git LBNL Node Health Check (NHC) https://github.com/mej/nhc lfs:~/spoa.new$ wget -c https://github.com/mej/nhc/archive/1.4.2.tar.gz lfs:~/sources/nhc-1.4.2$ sh autogen.sh lfs:~/sources/nhc-1.4.2$ make lfs:~/sources/nhc-1.4.2$ sudo make install /etc/nhc/nhc.conf # Set these to your correct socket, core, and thread counts. * || check_hw_cpuinfo 2 32 64 SLURM: Get the Slurm source code You can obtain the latest bleeding-edge SchedMD source code by anonymous Git access. git clone git://github.com/SchedMD/slurm.git o lfs:~/spoa.new$ wget -c http://www.schedmd.com/download/latest/slurm-15.08.11.tar.bz2 lfs:~/sources$ tar xf ../spoa.new/slurm-15.08.11.tar.bz2 checking for GLIB - version >= 2.7.1... Package glib-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `glib-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'glib-2.0' found Package gthread-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gthread-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gthread-2.0' found no *** Could not run GLIB test program, checking why... *** The test program failed to compile or link. See the file config.log for the *** exact error that occured. This usually means GLIB is incorrectly installed. checking for pkg-config... /tools/bin/pkg-config checking for GTK+ - version >= 2.7.1... Package gtk+-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gtk+-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gtk+-2.0' found Package gthread-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gthread-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gthread-2.0' found no *** Could not run GTK+ test program, checking why... *** The test program failed to compile or link. See the file config.log for the *** exact error that occured. This usually means GTK+ is incorrectly installed. configure: WARNING: cannot build sview without gtk library GLIB http://www.linuxfromscratch.org/blfs/view/stable/general/glib2.html GLib-2.46.2 GLib Dependencies Required libffi-3.2.1 and Python-2.7.11 or Python-3.5.1 libffi-3.2.1 Python-2.7.11 lfs:~/spoa.new$ wget -c https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.xz lfs:~/sources$ tar xf ../spoa.new/Python-2.7.11.tar.xz fs:~/sources/Python-2.7.11$ ./configure --prefix=/opt/lfs --enable-shared --with-system-expat --with-system-ffi --enable-unicode=ucs4 LDFLAGS='-L/opt/lfs/lib -Wl,-rpath -Wl,/opt/lfs/lib' Python build finished, but the necessary bits to build these modules were not found: _bsddb _curses _curses_panel _sqlite3 _tkinter bsddb185 bz2 dbm dl gdbm imageop readline sunaudiodev To find the necessary bits, look in setup.py in detect_modules() for the module's name. Failed to build these modules: _hashlib _ssl GLIB-2.46: lfs:~/sources/glib-2.46.2$ ./configure --prefix=/opt/lfs --with-pcre=system LIBFFI_LIBS='-L/opt/lfs/lib -Wl,-rpath -Wl,/opt/lfs/lib' LIBFFI_CFLAGS='-I/opt/lfs/include' PCRE_LIBS='-L/opt/lfs/lib -Wl,-rpath -Wl,/opt/lfs/lib' PCRE_CFLAGS='-I/opt/lfs/include' Better config: (using PKG_CONFIG_PATH) lfs:~/sources/glib-2.46.2$ PKG_CONFIG_PATH=/opt/lfs/lib/pkgconfig ./configure --prefix=/opt/lfs --with-pcre=system --disable-selinux LDFLAGS="-L/opt/lfs/lib -Wl,-rpath -Wl,/opt/lfs/lib" CFLAGS='-I/opt/lfs/include' OpenMPI https://www.open-mpi.org/ lfs:~/sources$ tar xf ../spoa.new/openmpi-1.10.2.tar.bz2 libPSL setup: lfs:~/sources/libpsl$ PKG_CONFIG_PATH="/opt/lfs/usr/lib/pkgconfig" ./configure --prefix=/opt/lfs/usr LDFLAGS="-L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib" CFLAGS="-I/opt/lfs/usr/include" OpenLDAP: lfs:~/sources/openldap-2.4.44$ ./configure --prefix=/opt/lfs/usr --exec-prefix=/opt/lfs/usr --sysconfdir=/opt/lfs/etc --disable-static --enable-dynamic --disable-debug --disable-slapd Curl: x86_64-unknown-linux-gnu-gcc lfs:~/sources/curl-7.47.1$ CC=x86_64-unknown-linux-gnu-gcc PKG_CONFIG_PATH="/opt/lfs/usr/lib/pkgconfig;/opt/lfs/lib/pkgconfig" ./configure --prefix=/opt/lfs/usr --disable-static --enable-threaded-resolver LDFLAGS="-L/opt/lfs/lib -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/lib" CFLAGS="-I/opt/lfs/usr/include -I/opt/lfs/include" curl version: 7.47.1 Host setup: x86_64-pc-linux-gnu Install prefix: /opt/lfs/usr Compiler: x86_64-unknown-linux-gnu-gcc SSL support: enabled (OpenSSL) SSH support: enabled (libSSH2) zlib support: enabled GSS-API support: no (--with-gssapi) TLS-SRP support: enabled resolver: POSIX threaded IPv6 support: enabled Unix sockets support: enabled IDN support: enabled Build libcurl: Shared=yes, Static=no Built-in manual: enabled --libcurl option: enabled (--disable-libcurl-option) Verbose errors: enabled (--disable-verbose) SSPI support: no (--enable-sspi) ca cert bundle: /etc/pki/tls/certs/ca-bundle.crt ca cert path: no LDAP support: enabled (OpenLDAP) LDAPS support: enabled RTSP support: enabled RTMP support: no (--with-librtmp) metalink support: no (--with-libmetalink) PSL support: yes HTTP2 support: disabled (--with-nghttp2) Protocols: DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS LDAP LDAPS POP3 POP3S RTSP SCP SFTP SMB SMBS SMTP SMTPS TELNET TFTP Cracklib: lfs:~/sources/cracklib-2.9.6$ ./configure --prefix=/opt/lfs/usr --exec-prefix=/opt/lfs/usr --disable-static --with-default-dict=/opt/lfs/usr/lib/cracklibw_dict PAM: lfs:~/sources/Linux-PAM-1.2.1$ ./configure --prefix=/opt/lfs/usr --sysconfdir=/opt/lfs/etc --exec-prefix=/opt/lfs -enable-securedir=/opt/lfs/l/lib/security CC=x86_64-unknown-linuxnu-gcc =========================================================================================================================== HDF5 (intel): SZIP: lfs:~/sources/szip-2.1$ ./configure --prefix=/opt/lfs/opt/intel CC='icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' CXX='icpc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' FC='ifort -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' CFLAGS='-O3 -xHost -ip' CXXFLAGS='-O3 -xHost -ip' FCFLAGS='-O3 -xHost -ip' errores: icc: command line warning #10006: ignoring unknown option '-Wbad-function-cast' icc: command line warning #10006: ignoring unknown option '-Wcast-align' icc: command line warning #10006: ignoring unknown option '-Waggregate-return' icc: command line warning #10006: ignoring unknown option '-Wredundant-decls' icc: command line warning #10006: ignoring unknown option '-Wnested-externs' ld: warning: libimf.so, needed by ../src/.libs/libsz.so, not found (try using -rpath or -rpath-link) ld: warning: libsvml.so, needed by ../src/.libs/libsz.so, not found (try using -rpath or -rpath-link) ld: warning: libirng.so, needed by ../src/.libs/libsz.so, not found (try using -rpath or -rpath-link) ld: warning: libintlc.so.5, needed by ../src/.libs/libsz.so, not found (try using -rpath or -rpath-link) fix: lfs:~/sources/szip-2.1$ ./configure --prefix=/opt/lfs/opt/intel CC='icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' CXX='icpc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' FC='ifort -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' CFLAGS='-O3 -xHost -ip' CXXFLAGS='-O3 -xHost -ip' FCFLAGS='-O3 -xHost -ip' LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' ZLIB: lfs:~/sources/zlib-1.2.8$ ./configure --prefix=/opt/lfs/opt/intel CC='icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' CXX='icpc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' FC='ifort -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' CFLAGS='-O3 -xHost -ip' CXXFLAGS='-O3 -xHost -ip' FCFLAGS='-O3 -xHost -ip' LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' make make check make install Intel + HDF5 ./configure --prefix=/opt/lfs/opt/intel --enable-shared --enable-fortran --enable-cxx CC='icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' CXX='icpc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-g++' LDFLAGS='-L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib -L/opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/intel64_lin -Wl,-rpath -Wl,/opt/intel/compilers_and_libraries_2016.1.150/linux/compiler/lib/intel64_lin' Intel2016 + HDF5 2nd. config lfs:~/sources/hdf5-1.8.17$ ./configure --prefix=/opt/lfs/opt/intel --enable-shared --enable-fortran --enable-cxx CC='icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' CXX='icpc -gxx-name=/tools/bin/x86_64-unknown-linux-gnu-g++' FC='ifort' LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' Intel 2015 + HDF5 lfs:~/sources/hdf5-1.8.17$ ./configure --prefix=/opt/lfs/opt/intel --enable-shared --enable-fortran --enable-cxx CC=icc CXX=icpc FC=ifort LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' lfs:~/sources/hdf5-1.8.17$ ldd /opt/lfs/opt/intel/lib/libhdf5hl_fortran.so.10.0.3 linux-vdso.so.1 (0x00007ffdf45b8000) libhdf5_hl.so.10 => /opt/lfs/opt/intel/lib/libhdf5_hl.so.10 (0x00007f134898f000) libhdf5_fortran.so.10 => /opt/lfs/opt/intel/lib/libhdf5_fortran.so.10 (0x00007f13486cb000) libhdf5.so.10 => /opt/lfs/opt/intel/lib/libhdf5.so.10 (0x00007f134812b000) libz.so.1 => /opt/lfs/opt/intel/lib/libz.so.1 (0x00007f1347f12000) libifport.so.5 => /opt/intel/lib/intel64/libifport.so.5 (0x00007f1347ce5000) libimf.so => /opt/intel/lib/intel64/libimf.so (0x00007f1347829000) libm.so.6 => /tools/lib/libm.so.6 (0x00007f1347521000) libintlc.so.5 => /opt/intel/lib/intel64/libintlc.so.5 (0x00007f13472c6000) libpthread.so.0 => /tools/lib/libpthread.so.0 (0x00007f13470a8000) libsvml.so => /opt/intel/lib/intel64/libsvml.so (0x00007f13461ca000) libgcc_s.so.1 => /tools/lib/libgcc_s.so.1 (0x00007f1345fb4000) libdl.so.2 => /tools/lib/libdl.so.2 (0x00007f1345daf000) libc.so.6 => /tools/lib/libc.so.6 (0x00007f1345a0e000) libirng.so => /opt/intel/lib/intel64/libirng.so (0x00007f1345807000) /tools/lib64/ld-linux-x86-64.so.2 (0x00007f1348dca000) SUMMARY OF THE HDF5 CONFIGURATION ================================= General Information: ------------------- HDF5 Version: 1.8.17 Configured on: Wed Jun 15 18:04:24 UTC 2016 Configured by: lfs@sullivan.dimar.mil.co Configure mode: production Host system: x86_64-unknown-linux-gnu Uname information: Linux sullivan.dimar.mil.co 3.10.0-327.18.2.el7.x86_64 #1 SMP Thu May 12 11:03:55 UTC 2016 x86_64 GNU/Linux Byte sex: little-endian Libraries: static, shared Installation point: /opt/lfs/opt/intel Compiling Options: ------------------ Compilation Mode: production C Compiler: /opt/intel/bin/icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc CFLAGS: H5_CFLAGS: -std=c99 -O3 AM_CFLAGS: CPPFLAGS: H5_CPPFLAGS: -D_GNU_SOURCE -D_POSIX_C_SOURCE=200112L -DNDEBUG -UH5_DEBUG_API AM_CPPFLAGS: Shared C Library: yes Static C Library: yes Statically Linked Executables: no LDFLAGS: -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 H5_LDFLAGS: AM_LDFLAGS: Extra libraries: -lz -ldl -lm Archiver: ar Ranlib: ranlib Debugged Packages: API Tracing: no Languages: ---------- Fortran: yes Fortran Compiler: /opt/intel/bin/ifort ( Intel(R) Fortran Intel(R) 64 Compiler Version 16.0.1.150 Build 20151021) Fortran 2003 Compiler: Fortran Flags: H5 Fortran Flags: -O3 AM Fortran Flags: Shared Fortran Library: yes Static Fortran Library: yes C++: yes C++ Compiler: /opt/intel/bin/icpc -gxx-name=/tools/bin/x86_64-unknown-linux-gnu-g++ C++ Flags: H5 C++ Flags: AM C++ Flags: Shared C++ Library: yes Static C++ Library: yes Features: --------- Parallel HDF5: no High Level library: yes Threadsafety: no Default API Mapping: v18 With Deprecated Public Symbols: yes I/O filters (external): deflate(zlib) MPE: no Direct VFD: no dmalloc: no Clear file buffers before write: yes Using memory checker: no Function Stack Tracing: no Strict File Format Checks: no Optimization Instrumentation: no ============= OpenLDAP lfs:~/sources/openldap-2.4.44$ ./configure --prefix=/opt/lfs/opt/intel --exec-prefix=/opt/lfs/opt/intel --sysconfdir=/opt/lfs/opt/intel/etc --disable-static --enable-dynamic --disable-debug --disable-slapd CC='icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' CXX='icpc -gxx-name=/tools/bin/x86_64-unknown-linux-gnu-g++' FC='ifort' LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' NETCDF 4.4.0 - Intel (disable OpenDAP) lfs:~/sources/netcdf-4.4.0$ ./configure --prefix=/opt/lfs/opt/intel CC='icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' CXX='icpc -gxx-name=/tools/bin/x86_64-unknown-linux-gnu-g++' FC='ifort' LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib/' --disable-dap NetCDF 4.4.0 with HDF4 support (GCC) http://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html#build_hdf4 HDF-4 (GCC) lfs:~/sources/hdf-4.2.11$ ./configure --prefix=/opt/lfs/usr CC='x86_64-unknown-linux-gnu-gcc' --enable CXX='x86_64-unknown-linux-gnu-g++' LDFLAGS='-L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib' ó lfs:~/sources/hdf-4.2.11$ ./configure --prefix=/opt/lfs/usr --enable-shared --disable-netcdf --disable-fortran LDFLAGS='-L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib -Wl,-rpath -Wl,/tools/lib -Wl,-rpath -Wl,/opt/lfs/lib' HDF-4 (Intel) lfs:~/sources/hdf-4.2.11$ ./configure --prefix=/opt/lfs/opt/intel --enable-shared --disable-netcdf --disable-fortran CC='icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib' libjpeg-turbo: lfs:~/sources/libjpeg-turbo-1.4.2$ ./configure --prefix=/opt/lfs/opt/intel CC='icc' LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib' lfs:~/sources/libjpeg-turbo-1.4.2$ ldd /opt/lfs/opt/intel/bin/tjbench linux-vdso.so.1 (0x00007fff35fb6000) libturbojpeg.so.0 => /opt/lfs/usr/lib/libturbojpeg.so.0 (0x00007ff88f7bf000) libjpeg.so.62 => /opt/lfs/usr/lib/libjpeg.so.62 (0x00007ff88f553000) libm.so.6 => /opt/lfs/usr/lib/libm.so.6 (0x00007ff88f24e000) libgcc_s.so.1 => /opt/lfs/usr/lib/libgcc_s.so.1 (0x00007ff88f038000) libc.so.6 => /opt/lfs/usr/lib/libc.so.6 (0x00007ff88ec97000) libdl.so.2 => /opt/lfs/usr/lib/libdl.so.2 (0x00007ff88ea93000) /tools/lib64/ld-linux-x86-64.so.2 (0x00007ff88fa3f000) Then from the top-level netCDF directory: lfs:~/sources/netcdf-4.4.0$ ./configure --prefix=/opt/lfs/usr --enable-hdf4 --enable-hdf4-file-tests CC='x86_64-unknown-linux-gnu-gcc' CPPFLAGS='-I/opt/lfs/usr/include' LDFLAGS='-L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib' $ # Build and install netCDF-4 with HDF4 access enabled $ CPPFLAGS="-I${H5DIR}/include -I${H4DIR}/include" \ LDFLAGS="-L${H5DIR}/lib -L${H4DIR}/lib" \ ./configure --enable-hdf4 --enable-hdf4-file-tests $ make check $ make install # NetCDF C Configuration Summary ============================== # General ------- NetCDF Version: 4.4.0 Configured On: Thu Jun 16 14:15:45 UTC 2016 Host System: x86_64-unknown-linux-gnu Build Directory: /home/lfs/sources/netcdf-4.4.0 Install Prefix: /opt/lfs/usr # Compiling Options ----------------- C Compiler: /tools/bin/x86_64-unknown-linux-gnu-gcc CFLAGS: -g -O2 CPPFLAGS: -I/opt/lfs/usr/include LDFLAGS: -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib AM_CFLAGS: AM_CPPFLAGS: AM_LDFLAGS: Shared Library: yes Static Library: yes Extra libraries: -ljpeg -lmfhdf -ldf -lhdf5_hl -lhdf5 -ldl -lm -lz -lcurl # Features -------- NetCDF-2 API: yes HDF4 Support: yes NetCDF-4 API: yes NC-4 Parallel Support: no PNetCDF Support: no DAP Support: yes Diskless Support: yes MMap Support: no JNA Support: no NetCDF-44 (intel) lfs:~/sources/netcdf-4.4.0$ ./configure --prefix=/opt/lfs/opt/intel --disable-dap --enable-hdf4 --enable-hdf4-file-tests CC='icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' CPPFLAGS='-I/opt/lfs/opt/intel/include' LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib' =============== OpenSSL with Intel C/C++ Compiler export CC='icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' export CXX='icpc -gxx-name=/tools/bin/x86_64-unknown-linux-gnu-g++' export FC='ifort' zlib: lfs:~/sources/zlib-1.2.8$ CC='icc' LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' ./configure --prefix=/opt/lfs/opt/intel lfs:~/sources/openssl-1.0.2g$ ./Configure linux-x86_64-icc Configuring for linux-x86_64-icc no-ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir) no-gmp [default] OPENSSL_NO_GMP (skip dir) no-jpake [experimental] OPENSSL_NO_JPAKE (skip dir) no-krb5 [krb5-flavor not specified] OPENSSL_NO_KRB5 no-libunbound [experimental] OPENSSL_NO_LIBUNBOUND (skip dir) no-md2 [default] OPENSSL_NO_MD2 (skip dir) no-rc5 [default] OPENSSL_NO_RC5 (skip dir) no-rfc3779 [default] OPENSSL_NO_RFC3779 (skip dir) no-sctp [default] OPENSSL_NO_SCTP (skip dir) no-shared [default] no-ssl-trace [default] OPENSSL_NO_SSL_TRACE (skip dir) no-ssl2 [default] OPENSSL_NO_SSL2 (skip dir) no-store [experimental] OPENSSL_NO_STORE (skip dir) no-unit-test [default] OPENSSL_NO_UNIT_TEST (skip dir) no-weak-ssl-ciphers [default] OPENSSL_NO_WEAK_SSL_CIPHERS (skip dir) no-zlib [default] no-zlib-dynamic [default] OpenSSL shared libraries have been installed in: /opt/lfs/opt/intel If this directory is not in a standard system path for dynamic/shared libraries, then you will have problems linking and executing applications that use OpenSSL libraries UNLESS: * you link with static (archive) libraries. If you are truly paranoid about security, you should use static libraries. * you use the GNU libtool code during linking (http://www.gnu.org/software/libtool/libtool.html) * you use pkg-config during linking (this requires that PKG_CONFIG_PATH includes the path to the OpenSSL shared library directory), and make use of -R or -rpath. (http://www.freedesktop.org/software/pkgconfig/) * you specify the system-wide link path via a command such as crle(1) on Solaris systems. * you add the OpenSSL shared library directory to /etc/ld.so.conf and run ldconfig(8) on Linux systems. * you define the LD_LIBRARY_PATH, LIBPATH, SHLIB_PATH (HP), DYLD_LIBRARY_PATH (MacOS X) or PATH (Cygwin and DJGPP) environment variable and add the OpenSSL shared library directory to it. One common tool to check the dynamic dependencies of an executable or dynamic library is ldd(1) on most UNIX systems. See any operating system documentation and manpages about shared libraries for your version of UNIX. The following manpages may be helpful: ld(1), ld.so(1), ld.so.1(1) [Solaris], dld.sl(1) [HP], ldd(1), crle(1) [Solaris], pldd(1) [Solaris], ldconfig(8) [Linux], If this directory is not in a standard system path for dynamic/shared libraries, then you will have problems linking and executing applications that use OpenSSL libraries UNLESS: * you link with static (archive) libraries. If you are truly paranoid about security, you should use static libraries. * you use the GNU libtool code during linking (http://www.gnu.org/software/libtool/libtool.html) * you use pkg-config during linking (this requires that PKG_CONFIG_PATH includes the path to the OpenSSL shared library directory), and make use of -R or -rpath. (http://www.freedesktop.org/software/pkgconfig/) * you specify the system-wide link path via a command such as crle(1) on Solaris systems. * you add the OpenSSL shared library directory to /etc/ld.so.conf and run ldconfig(8) on Linux systems. * you define the LD_LIBRARY_PATH, LIBPATH, SHLIB_PATH (HP), DYLD_LIBRARY_PATH (MacOS X) or PATH (Cygwin and DJGPP) environment variable and add the OpenSSL shared library directory to it. One common tool to check the dynamic dependencies of an executable or dynamic library is ldd(1) on most UNIX systems. See any operating system documentation and manpages about shared libraries for your version of UNIX. The following manpages may be helpful: ld(1), ld.so(1), ld.so.1(1) [Solaris], dld.sl(1) [HP], ldd(1), crle(1) [Solaris], pldd(1) [Solaris], ldconfig(8) [Linux], chatr(1) [HP]. lfs:~/sources/openssl-1.0.2g$ ./config --prefix=/opt/lfs/opt/intel --openssldir=/opt/lfs/opt/intel/etc --libdir=lib shared zlib-dynamic -Wl,-rpath=/opt/intel/lib/intel64 otra forma: lfs:~/sources/openssl-1.0.2g$ ./Configure linux-x86_64-icc --prefix=/opt/lfs/opt/intel --openssldir=/opt/lfs/opt/intel/etc --libdir=lib shared zlib-dynamic -Wl,-rpath=/opt/intel/lib/intel64 fs:~/sources/openssl-1.0.2g$ ldd /opt/lfs/opt/intel/bin/openssl linux-vdso.so.1 (0x00007ffd4d7dd000) libssl.so.1.0.0 => /opt/lfs/opt/intel/lib/libssl.so.1.0.0 (0x00007f095a502000) libcrypto.so.1.0.0 => /opt/lfs/opt/intel/lib/libcrypto.so.1.0.0 (0x00007f095a076000) libdl.so.2 => /tools/lib/libdl.so.2 (0x00007f0959e72000) libm.so.6 => /tools/lib/libm.so.6 (0x00007f0959b6d000) libc.so.6 => /tools/lib/libc.so.6 (0x00007f09597cc000) /tools/lib64/ld-linux-x86-64.so.2 (0x00007f095a77a000) lfs:~/sources/openssl-1.0.2g$ CC='icc' ./config --prefix=/opt/lfs/opt/intel --openssldir=/opt/lfs/opt/intel/etc --libdir=lib shared zlib-dynamic -Wl,-rpath -Wl,/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib $ ldd /opt/lfs/opt/intel/bin/openssl linux-vdso.so.1 (0x00007fffe8f48000) libssl.so.1.0.0 => /opt/lfs/opt/intel/lib/libssl.so.1.0.0 (0x00007fb17a30a000) libcrypto.so.1.0.0 => /opt/lfs/opt/intel/lib/libcrypto.so.1.0.0 (0x00007fb179e8c000) libdl.so.2 => /tools/lib/libdl.so.2 (0x00007fb179c88000) libm.so.6 => /tools/lib/libm.so.6 (0x00007fb179983000) libc.so.6 => /tools/lib/libc.so.6 (0x00007fb1795e2000) /tools/lib64/ld-linux-x86-64.so.2 (0x00007fb17a580000) +info: https://wiki.openssl.org/index.php/Compilation_and_Installation NetCDF (Intel): errores: lfs:~/sources/netcdf-4.4.0/h5_test$ ./tst_h_atts *** Checking HDF5 attribute functions. Warning! ***HDF5 library version mismatched error*** The HDF5 header files used to compile this application do not match the version used by the HDF5 library to which this application is linked. Data corruption or segmentation faults may occur if the application continues. This can happen when an application was compiled by one version of HDF5 but linked with a different version of static or shared HDF5 library. You should recompile the application or check your shared library related settings such as 'LD_LIBRARY_PATH'. You can, at your own risk, disable this warning by setting the environment variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'. Setting it to 2 or higher will suppress the warning messages totally. Headers are 1.8.12, library is 1.8.17 correccion: especificar CFLAGS='-I/opt/lfs/opt/intel/include' CXXFLAGS='-I/opt/lfs/opt/intel/include' en configure: lfs:~/sources/netcdf-4.4.0$ ./configure --prefix=/opt/lfs/opt/intel CC='icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' CXX='icpc -gxx-name=/tools/bin/x86_64-unknown-linux-gnu-g++' FC='ifort' CFLAGS='-I/opt/lfs/opt/intel/include' CXXFLAGS='-I/opt/lfs/opt/intel/include' LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib' --disable-dap make make check make install NetCDF-4-40 (Intel) lfs:~/sources/netcdf-4.4.0$ ./configure --prefix=/opt/lfs/opt/intel --disable-dap --enable-hdf4 --enable-hdf4-file-tests CC="icc" FC="ifort" CPPFLAGS="-I/opt/lfs/opt/intel/include" LDFLAGS="-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib" make 2>&1 | tee make.log make check 2>&1 | tee make.log make install /opt/lfs/opt/intel/bin/ncdump: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /tools/lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=69ba41cbe4eb728adaa1f094a733acb79ec21a72, not stripped lfs:~/sources/netcdf-4.4.0$ ldd /opt/lfs/opt/intel/bin/ncdump linux-vdso.so.1 (0x00007ffc943fc000) libnetcdf.so.11 => /opt/lfs/opt/intel/lib/libnetcdf.so.11 (0x00007f57e9f51000) libhdf5_hl.so.10 => /opt/lfs/opt/intel/lib/libhdf5_hl.so.10 (0x00007f57e9d2a000) libhdf5.so.10 => /opt/lfs/opt/intel/lib/libhdf5.so.10 (0x00007f57e9782000) libdl.so.2 => /tools/lib/libdl.so.2 (0x00007f57e957e000) libm.so.6 => /tools/lib/libm.so.6 (0x00007f57e9279000) libz.so.1 => /opt/lfs/opt/intel/lib/libz.so.1 (0x00007f57e905e000) libgcc_s.so.1 => /tools/lib/libgcc_s.so.1 (0x00007f57e8e48000) libc.so.6 => /tools/lib/libc.so.6 (0x00007f57e8aa7000) libimf.so => /opt/intel/lib/intel64/libimf.so (0x00007f57e85ab000) libsvml.so => /opt/intel/lib/intel64/libsvml.so (0x00007f57e76ec000) libirng.so => /opt/intel/lib/intel64/libirng.so (0x00007f57e74e4000) libintlc.so.5 => /opt/intel/lib/intel64/libintlc.so.5 (0x00007f57e7278000) /tools/lib64/ld-linux-x86-64.so.2 (0x00007f57ea2c5000) NetCDF-4.4 Fortran: lfs:~/sources/netcdf-fortran-4.4.4$ ./configure --prefix=/opt/lfs/opt/intel CC='icc' FC='ifort' LDFLAGS="-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib" lfs:~/sources/netcdf-fortran-4.4.4$ /opt/lfs/opt/intel/bin/nf-config --all This netCDF-Fortran 4.4.4 has been built with the following features: --cc -> icc --cflags -> -I/opt/lfs/opt/intel/include --fc -> ifort --fflags -> -I/opt/lfs/opt/intel/include --flibs -> -L/opt/lfs/opt/intel/lib -lnetcdff -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib -lnetcdf -lnetcdf --has-f90 -> no --has-f03 -> yes --has-nc2 -> yes --has-nc4 -> yes --prefix -> /opt/lfs/opt/intel --includedir-> /opt/lfs/opt/intel/include --version -> netCDF-Fortran 4.4.4 ====== libxml2-2.9.3 $ wget -c http://xmlsoft.org/sources/libxml2-2.9.3.tar.gz LZO: lfs:~/sources$ tar xf lzo-2.09.tar.gz lfs:~/sources/lzo-2.09$ ./configure --prefix=/opt/lfs/usr --enable-shared --disable-static LZO configuration summary ------------------------- LZO version : 2.09 configured for host : x86_64-unknown-linux-gnu source code location : . compiler : gcc preprocessor definitions : -DLZO_HAVE_CONFIG_H=1 preprocessor flags : compiler flags : -g -O2 build static library : no build shared library : yes enable i386 assembly code : no LZO 2.09 configured. Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer All Rights Reserved. The LZO library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The LZO library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Markus F.X.J. Oberhumer http://www.oberhumer.com/opensource/lzo/ Type 'make' to build LZO. Type 'make check' and 'make test' to test LZO. Type 'make install' to install LZO. After installing LZO, please have a look at 'examples/simple.c'. make check: lfs:~/sources/lzo-2.09$ make check make check-local make[1]: Entering directory '/home/lfs/sources/lzo-2.09' ./lzotest/lzotest -mlzo -n2 -q ./COPYING LZO real-time data compression library (v2.09, Feb 04 2015). Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer All Rights Reserved. 262144 block-size LZO1B-1 | COPYING 18092 1 9981 55.2 0.000 0.000 | LZO1B-2 | COPYING 18092 1 9768 54.0 0.000 0.000 | LZO1B-3 | COPYING 18092 1 9600 53.1 0.000 0.000 | LZO1B-4 | COPYING 18092 1 9552 52.8 0.000 0.000 | LZO1B-5 | COPYING 18092 1 9377 51.8 0.000 0.000 | LZO1B-6 | COPYING 18092 1 9347 51.7 0.000 0.000 | LZO1B-7 | COPYING 18092 1 9149 50.6 0.000 0.000 | LZO1B-8 | COPYING 18092 1 9087 50.2 0.000 0.000 | LZO1B-9 | COPYING 18092 1 9036 49.9 0.000 0.000 | LZO1C-1 | COPYING 18092 1 9927 54.9 0.000 0.000 | LZO1C-2 | COPYING 18092 1 9739 53.8 0.000 0.000 | LZO1C-3 | COPYING 18092 1 9573 52.9 0.000 0.000 | LZO1C-4 | COPYING 18092 1 9538 52.7 0.000 0.000 | LZO1C-5 | COPYING 18092 1 9399 52.0 0.000 0.000 | LZO1C-6 | COPYING 18092 1 9317 51.5 0.000 0.000 | LZO1C-7 | COPYING 18092 1 9123 50.4 0.000 0.000 | LZO1C-8 | COPYING 18092 1 9015 49.8 0.000 0.000 | LZO1C-9 | COPYING 18092 1 8978 49.6 0.000 0.000 | LZO1-1 | COPYING 18092 1 10498 58.0 0.000 0.000 | LZO1A-1 | COPYING 18092 1 10405 57.5 0.000 0.000 | LZO1F-1 | COPYING 18092 1 10073 55.7 0.000 0.000 | LZO1X-1 | COPYING 18092 1 10102 55.8 0.000 0.000 | LZO1Y-1 | COPYING 18092 1 10261 56.7 0.000 0.000 | LZO1X-1(11) | COPYING 18092 1 10554 58.3 0.000 0.000 | LZO1X-1(12) | COPYING 18092 1 10286 56.9 0.000 0.000 | LZO1X-1(15) | COPYING 18092 1 10145 56.1 0.000 0.000 | LZO1B-99 | COPYING 18092 1 8814 48.7 0.000 0.000 | LZO1B-999 | COPYING 18092 1 8127 44.9 15.212 0.000 | LZO1C-99 | COPYING 18092 1 8790 48.6 0.000 0.000 | LZO1C-999 | COPYING 18092 1 8071 44.6 13.970 0.000 | LZO1-99 | COPYING 18092 1 9083 50.2 35.901 0.000 | LZO1A-99 | COPYING 18092 1 90lfs:~/sources/lzo-2.09$ make check make check-local make[1]: Entering directory '/home/lfs/sources/lzo-2.09' ./lzotest/lzotest -mlzo -n2 -q ./COPYING LZO real-time data compression library (v2.09, Feb 04 2015). Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer All Rights Reserved. 262144 block-size LZO1B-1 | COPYING 18092 1 9981 55.2 0.000 0.000 | LZO1B-2 | COPYING 18092 1 9768 54.0 0.000 0.000 | LZO1B-3 | COPYING 18092 1 9600 53.1 0.000 0.000 | LZO1B-4 | COPYING 18092 1 9552 52.8 0.000 0.000 | LZO1B-5 | COPYING 18092 1 9377 51.8 0.000 0.000 | LZO1B-6 | COPYING 18092 1 9347 51.7 0.000 0.000 | LZO1B-7 | COPYING 18092 1 9149 50.6 0.000 0.000 | LZO1B-8 | COPYING 18092 1 9087 50.2 0.000 0.000 | LZO1B-9 | COPYING 18092 1 9036 49.9 0.000 0.000 | LZO1C-1 | COPYING 18092 1 9927 54.9 0.000 0.000 | LZO1C-2 | COPYING 18092 1 9739 53.8 0.000 0.000 | LZO1C-3 | COPYING 18092 1 9573 52.9 0.000 0.000 | LZO1C-4 | COPYING 18092 1 9538 52.7 0.000 0.000 | LZO1C-5 | COPYING 18092 1 9399 52.0 0.000 0.000 | LZO1C-6 | COPYING 18092 1 9317 51.5 0.000 0.000 | LZO1C-7 | COPYING 18092 1 9123 50.4 0.000 0.000 | LZO1C-8 | COPYING 18092 1 9015 49.8 0.000 0.000 | LZO1C-9 | COPYING 18092 1 8978 49.6 0.000 0.000 | LZO1-1 | COPYING 18092 1 10498 58.0 0.000 0.000 | LZO1A-1 | COPYING 18092 1 10405 57.5 0.000 0.000 | LZO1F-1 | COPYING 18092 1 10073 55.7 0.000 0.000 | LZO1X-1 | COPYING 18092 1 10102 55.8 0.000 0.000 | LZO1Y-1 | COPYING 18092 1 10261 56.7 0.000 0.000 | LZO1X-1(11) | COPYING 18092 1 10554 58.3 0.000 0.000 | LZO1X-1(12) | COPYING 18092 1 10286 56.9 0.000 0.000 | LZO1X-1(15) | COPYING 18092 1 10145 56.1 0.000 0.000 | LZO1B-99 | COPYING 18092 1 8814 48.7 0.000 0.000 | LZO1B-999 | COPYING 18092 1 8127 44.9 15.212 0.000 | LZO1C-99 | COPYING 18092 1 8790 48.6 0.000 0.000 | LZO1C-999 | COPYING 18092 1 8071 44.6 13.970 0.000 | LZO1-99 | COPYING 18092 1 9083 50.2 35.901 0.000 | LZO1A-99 | COPYING 18092 1 9031 49.9 36.176 0.000 | LZO2A-999 | COPYING 18092 1 7853 43.4 12.931 0.000 | LZO1F-999 | COPYING 18092 1 8079 44.7 12.740 0.000 | LZO1X-999 | COPYING 18092 1 7848 43.4 7.220 0.000 | LZO1Y-999 | COPYING 18092 1 7944 43.9 7.549 0.000 | LZO1Z-999 | COPYING 18092 1 7893 43.6 7.463 0.000 | memcpy() | COPYING 18092 1 18092 100 0.000 0.000 | lt-lzotest: execution time: 0 seconds ===== All checks passed. Type 'make test' for more exhaustive testing. ===== 31 49.9 36.176 0.000 | LZO2A-999 | COPYING 18092 1 7853 43.4 12.931 0.000 | LZO1F-999 | COPYING 18092 1 8079 44.7 12.740 0.000 | LZO1X-999 | COPYING 18092 1 7848 43.4 7.220 0.000 | LZO1Y-999 | COPYING 18092 1 7944 43.9 7.549 0.000 | LZO1Z-999 | COPYING 18092 1 7893 43.6 7.463 0.000 | memcpy() | COPYING 18092 1 18092 100 0.000 0.000 | lt-lzotest: execution time: 0 seconds ===== All checks passed. Type 'make test' for more exhaustive testing. ===== ---------------------------------------------------------------------- Libraries have been installed in: /opt/lfs/usr/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- lfs:~/sources$ tar xf libxml2-2.9.3.tar.gz lfs:~/sources/libxml2-2.9.3$ ./configure --prefix=/opt/lfs/usr --disable-static --with-history --with-python=/opt/lfs LDFLAGS='-L/opt/lfs/lib -Wl,-rpath -Wl,/opt/lfs/lib' lfs:~/sources/libxml2-2.9.3$ ldd /opt/lfs/usr/bin/xmllint linux-vdso.so.1 (0x00007fffe9593000) libreadline.so.6 => /tools/lib/libreadline.so.6 (0x00007f0fcb2d3000) libhistory.so.6 => /tools/lib/libhistory.so.6 (0x00007f0fcb0c9000) libncursesw.so.6 => /tools/lib/libncursesw.so.6 (0x00007f0fcae5f000) libxml2.so.2 => /opt/lfs/usr/lib/libxml2.so.2 (0x00007f0fcaaf9000) libdl.so.2 => /opt/lfs/usr/lib/libdl.so.2 (0x00007f0fca8f5000) libz.so.1 => /opt/lfs/lib/libz.so.1 (0x00007f0fca6dc000) liblzma.so.5 => /tools/lib/liblzma.so.5 (0x00007f0fca4b7000) libm.so.6 => /opt/lfs/usr/lib/libm.so.6 (0x00007f0fca1b2000) libpthread.so.0 => /opt/lfs/usr/lib/libpthread.so.0 (0x00007f0fc9f95000) libc.so.6 => /opt/lfs/lib/libc.so.6 (0x00007f0fc9bf4000) /tools/lib64/ld-linux-x86-64.so.2 (0x00007f0fcb523000) libarchive: lfs:~/sources$ tar xf libarchive-3.1.2.tar.gz lfs:~/sources/libarchive-3.1.2$ patch -Np1 -i ../libarchive-3.1.2-upstream_fixes-1.patch lfs:~/sources/libarchive-3.1.2$ ./configure --prefix=/opt/lfs/usr LDFLAGS='-L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib' lfs:~/sources/libarchive-3.1.2$ ldd /opt/lfs/usr/bin/bsdcpio linux-vdso.so.1 (0x00007fffd13d5000) libcrypto.so.1.0.0 => /opt/lfs/usr/lib/libcrypto.so.1.0.0 (0x00007fa05fc2c000) libacl.so.1 => /tools/lib/libacl.so.1 (0x00007fa05fa24000) libattr.so.1 => /tools/lib/libattr.so.1 (0x00007fa05f820000) liblzo2.so.2 => /opt/lfs/usr/lib/liblzo2.so.2 (0x00007fa05f5ff000) libbz2.so.1.0 => /tools/lib/libbz2.so.1.0 (0x00007fa05f3ef000) libxml2.so.2 => /opt/lfs/usr/lib/libxml2.so.2 (0x00007fa05f089000) liblzma.so.5 => /tools/lib/liblzma.so.5 (0x00007fa05ee64000) libz.so.1 => /tools/lib/libz.so.1 (0x00007fa05ec4b000) libm.so.6 => /opt/lfs/usr/lib/libm.so.6 (0x00007fa05e946000) libdl.so.2 => /opt/lfs/usr/lib/libdl.so.2 (0x00007fa05e742000) libpthread.so.0 => /opt/lfs/usr/lib/libpthread.so.0 (0x00007fa05e525000) libc.so.6 => /opt/lfs/usr/lib/libc.so.6 (0x00007fa05e184000) /tools/lib64/ld-linux-x86-64.so.2 (0x00007fa06007f000) CMake-3.4.3 (GNU) lfs:~/sources/cmake-3.4.3$ ./bootstrap --prefix=/opt/lfs/usr --system-libs --mandir=/opt/lfs/usr/man --no-system-jsoncpp --------------------------------------------- CMake 3.4.3, Copyright 2000-2015 Kitware, Inc. Found GNU toolchain C compiler on this system is: gcc C++ compiler on this system is: g++ Makefile processor on this system is: gmake g++ is GNU compiler g++ has setenv g++ has unsetenv g++ does not have environ in stdlib.h g++ has stl wstring g++ has struct stat with st_mtim member --------------------------------------------- gmake: `cmake' is up to date. loading initial cache file /home/lfs/sources/cmake-3.4.3/Bootstrap.cmk/InitialCacheFlags.cmake -- Using system-installed BZIP2 -- Using system-installed CURL -- Using system-installed EXPAT -- Using system-installed FORM -- Using system-installed LIBARCHIVE -- Using system-installed LIBLZMA -- Using system-installed ZLIB -- Found LibArchive: /opt/lfs/usr/lib64/libarchive.so (found suitable version "3.1.2", minimum required is "3.0.0") -- Found EXPAT: /tools/lib64/libexpat.so (found version "2.1.0") -- Looking for cbreak in /tools/lib64/libncurses.so -- Looking for cbreak in /tools/lib64/libncurses.so - found -- Looking for elf.h -- Looking for elf.h - found -- Looking for a Fortran compiler -- Looking for a Fortran compiler - /usr/bin/f95 -- Performing Test run_pic_test -- Performing Test run_pic_test - Success -- Performing Test run_inlines_hidden_test -- Performing Test run_inlines_hidden_test - Success -- Configuring done -- Generating done -- Build files have been written to: /home/lfs/sources/cmake-3.4.3 --------------------------------------------- CMake has bootstrapped. Now run gmake. lfs:~/sources/cmake-3.4.3$ gmake lfs:~/sources/cmake-3.4.3$ gmake install lfs:~/sources/cmake-3.4.3$ ldd `which ccmake` linux-vdso.so.1 (0x00007ffdf19d7000) libformw.so.6 => /tools/lib/libformw.so.6 (0x00007f86a8746000) libncursesw.so.6 => /tools/lib/libncursesw.so.6 (0x00007f86a84dc000) libdl.so.2 => /opt/lfs/usr/lib64/libdl.so.2 (0x00007f86a82d8000) libexpat.so.1 => /tools/lib/libexpat.so.1 (0x00007f86a80af000) libz.so.1 => /tools/lib/libz.so.1 (0x00007f86a7e96000) libarchive.so.13 => /opt/lfs/usr/lib64/libarchive.so.13 (0x00007f86a7bf6000) libcurl.so.4 => /opt/lfs/usr/lib64/libcurl.so.4 (0x00007f86a7987000) libstdc++.so.6 => /opt/lfs/usr/lib64/libstdc++.so.6 (0x00007f86a760d000) libm.so.6 => /opt/lfs/usr/lib64/libm.so.6 (0x00007f86a7308000) libgcc_s.so.1 => /opt/lfs/usr/lib64/libgcc_s.so.1 (0x00007f86a70f2000) libc.so.6 => /opt/lfs/usr/lib64/libc.so.6 (0x00007f86a6d51000) /tools/lib64/ld-linux-x86-64.so.2 (0x00007f86a8957000) libcrypto.so.1.0.0 => /opt/lfs/usr/lib/libcrypto.so.1.0.0 (0x00007f86a68fe000) libacl.so.1 => /tools/lib/libacl.so.1 (0x00007f86a66f6000) libattr.so.1 => /tools/lib/libattr.so.1 (0x00007f86a64f2000) liblzo2.so.2 => /opt/lfs/usr/lib/liblzo2.so.2 (0x00007f86a62d1000) liblzma.so.5 => /tools/lib/liblzma.so.5 (0x00007f86a60ac000) libbz2.so.1.0 => /tools/lib/libbz2.so.1.0 (0x00007f86a5e9c000) libxml2.so.2 => /opt/lfs/usr/lib/libxml2.so.2 (0x00007f86a5b36000) libpthread.so.0 => /tools/lib/libpthread.so.0 (0x00007f86a5919000) libidn.so.11 => /opt/lfs/usr/lib/libidn.so.11 (0x00007f86a56e6000) libssh2.so.1 => /opt/lfs/usr/lib/libssh2.so.1 (0x00007f86a54b9000) libpsl.so.5 => /opt/lfs/usr/lib/libpsl.so.5 (0x00007f86a52ad000) libssl.so.1.0.0 => /opt/lfs/usr/lib/libssl.so.1.0.0 (0x00007f86a503c000) liblber-2.4.so.2 => /opt/lfs/usr/lib/liblber-2.4.so.2 (0x00007f86a4e30000) libldap-2.4.so.2 => /opt/lfs/usr/lib/libldap-2.4.so.2 (0x00007f86a4bf1000) libicuuc.so.57 => /opt/lfs/usr/lib/libicuuc.so.57 (0x00007f86a484e000) libicudata.so.57 => /opt/lfs/usr/lib/libicudata.so.57 (0x00007f86a2dd2000) libresolv.so.2 => /opt/lfs/usr/lib/libresolv.so.2 (0x00007f86a2bbb000) libsasl2.so.3 => /opt/lfs/lib/libsasl2.so.3 (0x00007f86a29a1000) ================= UnZip-6.0 lfs:~/sources$ wget -c http://downloads.sourceforge.net/infozip/unzip60.tar.gz libJasper (GCC): lfs:~/sources/jasper-1.900.1$ ./configure --prefix=/opt/lfs/usr LDFLAGS='-Wl,-rpath -Wl,/opt/lfs/usr/lib' libJasper (Intel) lfs:~/sources/jasper-1.900.1$ ./configure --prefix=/opt/lfs/opt/intel CC='icc' LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib' libPNG (intel) lfs:~/sources/libpng-1.6.21$ ./configure --prefix=/opt/lfs/opt/intel --disable-static CC='icc' FC='ifort' CXX='icpc' LDFLAGS="-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64" ====== WRFV3.3 Will use NETCDF in dir: /opt/lfs/opt/intel PHDF5 not set in environment. Will configure WRF for use without. which: no timex $JASPERLIB or $JASPERINC not found in environment, configuring to build without grib2 I/O... WRFV3.8 vi arch/Config_new.pl $I_really_want_to_output_grib2_from_WRF = "TRUE" ; configure.wrf (32. GCC): LDFLAGS_LOCAL = -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib WRFV3.8+INTEL: [wilderman@sullivan bin]$ source ifortvars.sh intel64 [wilderman@sullivan bin]$ source iccvars.sh intel64 $ export DM_CC=/opt/lfs/opt/intel/bin/mpicc $ export DM_FC=/opt/lfs/opt/intel/bin/mpifort $ export JASPERINC=/opt/lfs/opt/intel/include $ export JASPERLIB=/opt/lfs/opt/intel/lib $ export HDF5=/opt/lfs/opt/intel $ export NETCDF=/opt/lfs/opt/intel $ export DM_CC=/opt/lfs/opt/intel/bin/mpicc && export DM_FC=/opt/lfs/opt/intel/bin/mpifort && export JASPERINC=/opt/lfs/opt/intel/include && JASPERLIB=/opt/lfs/opt/intel/lib && export HDF5=/opt/lfs/opt/intel && export NETCDF=/opt/lfs/opt/intel :configure.wrf: LDFLAGS_LOCAL = -ip -L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 [wilderman@sullivan WRFV3]$ ./compile em_real > build.log 2>&1 WRFV3.8+GCC: $ export DM_CC=/opt/lfs/usr/bin/mpicc && export export DM_FC=/opt/lfs/usr/bin/mpif90 && export JASPERINC=/opt/lfs/usr/include && JASPERLIB=/opt/lfs/usr/lib && export HDF5=/opt/lfs/usr && export NETCDF=/opt/lfs/usr [wilderman@sullivan WRFV3]$ ldd main/wrf.exe linux-vdso.so.1 (0x00007ffecf5c6000) libnetcdff.so.6 => /opt/lfs/opt/intel/lib/libnetcdff.so.6 (0x00007f0500d38000) libnetcdf.so.11 => /opt/lfs/opt/intel/lib/libnetcdf.so.11 (0x00007f05009b3000) libhdf5_fortran.so.10 => /opt/lfs/opt/intel/lib/libhdf5_fortran.so.10 (0x00007f05006ef000) libhdf5.so.10 => /opt/lfs/opt/intel/lib/libhdf5.so.10 (0x00007f0500150000) libm.so.6 => /tools/lib/libm.so.6 (0x00007f04ffe4b000) libz.so.1 => /opt/lfs/opt/intel/lib/libz.so.1 (0x00007f04ffc32000) libpthread.so.0 => /tools/lib/libpthread.so.0 (0x00007f04ffa15000) libc.so.6 => /tools/lib/libc.so.6 (0x00007f04ff674000) libgcc_s.so.1 => /tools/lib/libgcc_s.so.1 (0x00007f04ff45e000) libdl.so.2 => /tools/lib/libdl.so.2 (0x00007f04ff25a000) libifport.so.5 => /opt/intel/lib/intel64/libifport.so.5 (0x00007f04ff02d000) libifcoremt.so.5 => /opt/intel/lib/intel64/libifcoremt.so.5 (0x00007f04fecca000) libimf.so => /opt/intel/lib/intel64/libimf.so (0x00007f04fe80f000) libsvml.so => /opt/intel/lib/intel64/libsvml.so (0x00007f04fd931000) libintlc.so.5 => /opt/intel/lib/intel64/libintlc.so.5 (0x00007f04fd6d6000) libmfhdf.so.0 => /opt/lfs/usr/lib/libmfhdf.so.0 (0x00007f04fd4ad000) libdf.so.0 => /opt/lfs/usr/lib/libdf.so.0 (0x00007f04fd1f9000) libjpeg.so.62 => /opt/lfs/usr/lib/libjpeg.so.62 (0x00007f04fcf8d000) libhdf5_hl.so.10 => /opt/lfs/usr/lib/libhdf5_hl.so.10 (0x00007f04fcd6c000) libirng.so => /opt/intel/lib/intel64/libirng.so (0x00007f04fcb65000) /tools/lib64/ld-linux-x86-64.so.2 (0x00007f050120e000) [wilderman@sullivan WRFV3]$ main/./real.exe Segmentation fault [wilderman@sullivan WRFV3]$ main/./wrf.exe Segmentation fault :compile02.log: SKIPPING PIO BUILD make -i -r NETCDFPATH= FC=ifort -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian RANLIB=ranlib CPP=/lib/cpp -P LDFLAGS=-openmp -fpp -auto -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -ip -L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 TRADFLAG=-traditional ESMF_IO_LIB_EXT=-L/home/wilderman/sources/WRFV3.8/WRFV3/external/esmf_time_f90 -lesmf_time LIB_LOCAL= ESMF_MOD_DEPENDENCE=/home/wilderman/sources/WRFV3.8/WRFV3/external/esmf_time_f90/module_utility.o AR=INTERNAL_BUILD_ERROR_SHOULD_NOT_NEED_AR make[2]: Entering directory '/home/wilderman/sources/WRFV3.8/WRFV3/external/io_int' if [ -f ../../frame/pack_utils.o -a -f ../../frame/clog.o ] ; then \ ifort -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -I../ioapi_share -o diffwrf diffwrf.f \ ../../frame/pack_utils.o ../../frame/module_internal_header_util.o ../../frame/module_driver_constants.o ../../frame/module_machine.o ../../frame/module_wrf_error.o ../../frame/wrf_debug.o -L/home/wilderman/sources/WRFV3.8/WRFV3/external/esmf_time_f90 -lesmf_time libwrfio_int.a ; \ fi ../../frame/module_wrf_error.o: In function `wrf_message_': module_wrf_error.f90:(.text+0x1b): undefined reference to `__kmpc_global_thread_num' module_wrf_error.f90:(.text+0x2f): undefined reference to `__kmpc_master' module_wrf_error.f90:(.text+0x125): undefined reference to `__kmpc_end_master' ../../frame/module_wrf_error.o: In function `wrf_message2_': module_wrf_error.f90:(.text+0x15a): undefined reference to `__kmpc_global_thread_num' module_wrf_error.f90:(.text+0x16b): undefined reference to `__kmpc_master' module_wrf_error.f90:(.text+0x1c1): undefined reference to `__kmpc_end_master' ../../frame/module_wrf_error.o: In function `wrf_check_error_': module_wrf_error.f90:(.text+0x200): undefined reference to `__kmpc_global_thread_num' module_wrf_error.f90:(.text+0x380): undefined reference to `__kmpc_master' module_wrf_error.f90:(.text+0x489): undefined reference to `__kmpc_end_master' module_wrf_error.f90:(.text+0x55d): undefined reference to `__kmpc_master' module_wrf_error.f90:(.text+0x66f): undefined reference to `__kmpc_end_master' module_wrf_error.f90:(.text+0x695): undefined reference to `__kmpc_master' module_wrf_error.f90:(.text+0x794): undefined reference to `__kmpc_end_master' module_wrf_error.f90:(.text+0x7b4): undefined reference to `__kmpc_master' module_wrf_error.f90:(.text+0x8bd): undefined reference to `__kmpc_end_master' module_wrf_error.f90:(.text+0x8e6): undefined reference to `__kmpc_master' module_wrf_error.f90:(.text+0x941): undefined reference to `__kmpc_end_master' module_wrf_error.f90:(.text+0xa08): undefined reference to `__kmpc_master' module_wrf_error.f90:(.text+0xa5b): undefined reference to `__kmpc_end_master' module_wrf_error.f90:(.text+0xa9f): undefined reference to `__kmpc_master' module_wrf_error.f90:(.text+0xaf5): undefined reference to `__kmpc_end_master' module_wrf_error.f90:(.text+0xb0d): undefined reference to `__kmpc_master' module_wrf_error.f90:(.text+0xb68): undefined reference to `__kmpc_end_master' ../../frame/module_wrf_error.o: In function `wrf_error_fatal_': module_wrf_error.f90:(.text+0xbf0): undefined reference to `__kmpc_global_thread_num' module_wrf_error.f90:(.text+0xc53): undefined reference to `__kmpc_master' module_wrf_error.f90:(.text+0xd56): undefined reference to `__kmpc_end_master' module_wrf_error.f90:(.text+0xd72): undefined reference to `__kmpc_master' module_wrf_error.f90:(.text+0xe81): undefined reference to `__kmpc_end_master' [wilderman@sullivan intel64]$ nm | grep __kmpc_global_thread_num * grep: crt: Is a directory grep: irml: Is a directory nm: 'a.out': No such file Binary file libiomp5.a matches Binary file libiomp5.dbg matches Binary file libiomp5.so matches Binary file libmatmul.a matches Error: WRFV3.8::GCC (smpar) SKIPPING PIO BUILD make -i -r NETCDFPATH= FC=gfortran -w -ffree-form -ffree-line-length-none -fconvert=big-endian -frecord-marker=4 RANLIB=ranlib CPP=/lib/cpp -P LDFLAGS=-fopenmp -O2 -ftree-vectorize -funroll-loops -w -ffree-form -ffree-line-length-none -fconvert=big-endian -frecord-marker=4 -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib TRADFLAG=-traditional ESMF_IO_LIB_EXT=-L/home/wilderman/sources/WRFV3.8/WRFV3/external/esmf_time_f90 -lesmf_time LIB_LOCAL= ESMF_MOD_DEPENDENCE=/home/wilderman/sources/WRFV3.8/WRFV3/external/esmf_time_f90/module_utility.o AR=INTERNAL_BUILD_ERROR_SHOULD_NOT_NEED_AR make[2]: Entering directory '/home/wilderman/sources/WRFV3.8/WRFV3/external/io_int' if [ -f ../../frame/pack_utils.o -a -f ../../frame/clog.o ] ; then \ gfortran -w -ffree-form -ffree-line-length-none -fconvert=big-endian -frecord-marker=4 -I../ioapi_share -o diffwrf diffwrf.f \ ../../frame/pack_utils.o ../../frame/module_internal_header_util.o ../../frame/module_driver_constants.o ../../frame/module_machine.o ../../frame/module_wrf_error.o ../../frame/wrf_debug.o -L/home/wilderman/sources/WRFV3.8/WRFV3/external/esmf_time_f90 -lesmf_time libwrfio_int.a ; \ fi ../../frame/module_wrf_error.o: In function `wrf_error_fatal3_': module_wrf_error.f90:(.text+0x50d): undefined reference to `omp_get_thread_num' ../../frame/module_wrf_error.o: In function `wrf_message2_': module_wrf_error.f90:(.text+0x94c): undefined reference to `omp_get_thread_num' ../../frame/module_wrf_error.o: In function `wrf_message_': module_wrf_error.f90:(.text+0x97c): undefined reference to `omp_get_thread_num' collect2: error: ld returned 1 exit status makefile:76: recipe for target 'diffwrf' failed make[2]: [diffwrf] Error 1 (ignored) FIX (GCC): en configure.wrf agregar "-Wl,-rpath -Wl,/tools/lib -lgomp" a ESMF_IO_LIB y ESMF_IO_LIB_EXT FIX (Intel): en configure.wrf agregar "-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -liomp5" a ESMF_IO_LIB y ESMF_IO_LIB_EXT SKIPPING PIO BUILD make -i -r NETCDFPATH= FC=gfortran -w -ffree-form -ffree-line-length-none -fconvert=big-endian -frecord-marker=4 RANLIB=ranlib CPP=/lib/cpp -P LDFLAGS=-fopenmp -O2 -ftree-vectorize -funroll-loops -w -ffree-form -ffree-line-length-none -fconvert=big-endian -frecord-marker=4 -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib TRADFLAG=-traditional ESMF_IO_LIB_EXT=-L/home/wilderman/sources/WRFV3.8/WRFV3/external/esmf_time_f90 -Wl,-rpath -Wl,/home/wilderman/sources/WRFV3.8/WRFV3/external/esmf_time_f90 -lesmf_time -Wl,-rpath -Wl,/tools/lib -lgomp LIB_LOCAL= ESMF_MOD_DEPENDENCE=/home/wilderman/sources/WRFV3.8/WRFV3/external/esmf_time_f90/module_utility.o AR=INTERNAL_BUILD_ERROR_SHOULD_NOT_NEED_AR make[2]: Entering directory '/home/wilderman/sources/WRFV3.8/WRFV3/external/io_int' if [ -f ../../frame/pack_utils.o -a -f ../../frame/clog.o ] ; then \ gfortran -w -ffree-form -ffree-line-length-none -fconvert=big-endian -frecord-marker=4 -I../ioapi_share -o diffwrf diffwrf.f \ ../../frame/pack_utils.o ../../frame/module_internal_header_util.o ../../frame/module_driver_constants.o ../../frame/module_machine.o ../../frame/module_wrf_error.o ../../frame/wrf_debug.o -L/home/wilderman/sources/WRFV3.8/WRFV3/external/esmf_time_f90 -Wl,-rpath -Wl,/home/wilderman/sources/WRFV3.8/WRFV3/external/esmf_time_f90 -lesmf_time -Wl,-rpath -Wl,/tools/lib -lgomp libwrfio_int.a ; \ fi f951: Warning: Nonexistent include directory �~@~Xg2lib�~@~Y [-Wmissing-include-dirs] 7.2 Example Debugging Session: Segmentation Fault Example http://www.unknownroad.com/rtfm/gdbtut/gdbsegfault.html [wilderman@sullivan main]$ gdb ndown.exe GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-80.el7 Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-redhat-linux-gnu". For bug reporting instructions, please see: ... Reading symbols from /home/wilderman/sources/WRFV3.8/WRFV3/main/ndown.exe...done. (gdb) run Starting program: /home/wilderman/sources/WRFV3.8/WRFV3/main/ndown.exe warning: File "/monster/tools/lib/libthread_db-1.0.so" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load:/usr/bin/mono-gdb.py". To enable execution of this file add add-auto-load-safe-path /monster/tools/lib/libthread_db-1.0.so line to your configuration file "/home/wilderman/.gdbinit". To completely disable this security protection add set auto-load safe-path / line to your configuration file "/home/wilderman/.gdbinit". For more information about this security protection see the "Auto-loading safe path" section in the GDB manual. E.g., run from the shell: info "(gdb)Auto-loading safe path" warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available. Program received signal SIGSEGV, Segmentation fault. 0x0000000002afb5e4 in init_resource () (WRFV3.8::Intel opcion 13 (serial)) $ ldd main/ndown.exe linux-vdso.so.1 (0x00007ffe04d3c000) libnetcdff.so.6 => /opt/lfs/opt/intel/lib/libnetcdff.so.6 (0x00007fa9d9285000) libnetcdf.so.11 => /opt/lfs/opt/intel/lib/libnetcdf.so.11 (0x00007fa9d8f00000) libhdf5_fortran.so.10 => /opt/lfs/opt/intel/lib/libhdf5_fortran.so.10 (0x00007fa9d8c3c000) libhdf5.so.10 => /opt/lfs/opt/intel/lib/libhdf5.so.10 (0x00007fa9d869d000) libm.so.6 => /tools/lib/libm.so.6 (0x00007fa9d8398000) libz.so.1 => /opt/lfs/opt/intel/lib/libz.so.1 (0x00007fa9d817f000) libpthread.so.0 => /tools/lib/libpthread.so.0 (0x00007fa9d7f62000) libc.so.6 => /tools/lib/libc.so.6 (0x00007fa9d7bc1000) libgcc_s.so.1 => /tools/lib/libgcc_s.so.1 (0x00007fa9d79ab000) libdl.so.2 => /tools/lib/libdl.so.2 (0x00007fa9d77a7000) libifport.so.5 => /opt/intel/lib/intel64/libifport.so.5 (0x00007fa9d757a000) libifcoremt.so.5 => /opt/intel/lib/intel64/libifcoremt.so.5 (0x00007fa9d7217000) libimf.so => /opt/intel/lib/intel64/libimf.so (0x00007fa9d6d5c000) libsvml.so => /opt/intel/lib/intel64/libsvml.so (0x00007fa9d5e7e000) libintlc.so.5 => /opt/intel/lib/intel64/libintlc.so.5 (0x00007fa9d5c23000) libmfhdf.so.0 => /opt/lfs/usr/lib/libmfhdf.so.0 (0x00007fa9d59fa000) libdf.so.0 => /opt/lfs/usr/lib/libdf.so.0 (0x00007fa9d5746000) libjpeg.so.62 => /opt/lfs/usr/lib/libjpeg.so.62 (0x00007fa9d54da000) libhdf5_hl.so.10 => /opt/lfs/usr/lib/libhdf5_hl.so.10 (0x00007fa9d52b9000) libirng.so => /opt/intel/lib/intel64/libirng.so (0x00007fa9d50b2000) /tools/lib64/ld-linux-x86-64.so.2 (0x00007fa9d975b000) =============== LIB_EXTERNAL = \ -L$(WRF_SRC_ROOT_DIR)/external/io_netcdf -lwrfio_nf -L/opt/lfs/opt/intel/lib -lnetcdff -lnetcdf -L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -lhdf5_fortran -lhdf5 -lhdf5_hl -lmfhdf -ldf -lm -lz zlib::intel $ CC='icc' CXX='icpc' FC='ifort' CFLAGS='-O3 -xHost -ip' CXXFLAGS='-O3 -xHost -ip' FCFLAGS='-O3 -xHost -ip' LDFLAGS='-L/opt/intelxe/lib/intel64 -Wl,-rpath -Wl,/opt/intelxe/lib/intel64' ./configure --prefix=/usr/local/intel $ ./configure --prefix=/opt/lfs/opt/intel --disable-dap --enable-hdf4 --enable-hdf4-file-tests CC=icc FC=ifort F90=ifort F77=ifort FFLAGS='-I/opt/lfs/usr/include -O3 -xHost -ip -no-prec-div -static-intel' CPPFLAGS='-I/opt/lfs/usr/include -O3 -xHost -ip -no-prec-div -static-intel' LDFLAGS='-L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib -L/opt/lfs/lib -Wl,-rpath -Wl,/opt/lfs/lib' SZIP: original: ./configure --disable-static --prefix=/opt/lfs/opt/intel CC=icc CXX=icpc FC=ifort LDFLAGS=-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 nueva: lfs:~/sources/szip-2.1$ ./configure --prefix=/opt/lfs/opt/intel CC='icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc' CXX='icpc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-g++' FC='ifort -gcc-name=tools/bin/x86_64-unknown-linux-gnu-gfortran' CFLAGS='-O3 -xHost -ip' CXXFLAGS='-O3 -xHost -ip' FCFLAGS='-O3 -xHost -ip' LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' HDF5: original: ./configure --prefix=/opt/lfs/opt/intel --enable-shared --enable-fortran --enable-cxx CC=icc CXX=icpc FC=ifort LDFLAGS=-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 lfs:~/sources/hdf5-1.8.17$ export LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib' [wilderman@sullivan build-intel]$ .././configure --prefix=/usr/local/intel --enable-shared --enable-fortran --enable-cxx CC=icc CXX=icpc FC=ifort CFLAGS='-O3 -xHost -ip' CXXFLAGS='-O3 -xHost -ip' FCFLAGS='-O3 -xHost -ip' LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -L/usr/local/intel/lib -Wl,-rpath -Wl,/usr/local/intel/lib' NetCDF 4.4: $ export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' $ export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CPPFLAGS='-O3 -xHost -ip -no-prec-div -static-intel -I/opt/lfs/opt/intel/include' $ export F77='ifort -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gfortran' $ export F90='ifort -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gfortran' $ export FC='ifort -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gfortran' $ export CPP='icc -E' $ export CXXCPP='icpc -E' $ echo $FFLAGS $ export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' $ ./configure --disable-dap --prefix=/opt/lfs/opt/intel Error: /bin/sh ../libtool --tag=CC --mode=link icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc -O3 -xHost -ip -no-prec-div -static-intel -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -o nccopy nccopy.o nciter.o chunkspec.o utils.o dimmap.o ../liblib/libnetcdf.la -lhdf5_hl -lhdf5 -ldl -lm -lz libtool: link: icc -gcc-name=/tools/bin/x86_64-unknown-linux-gnu-gcc -O3 -xHost -ip -no-prec-div -static-intel -Wl,-rpath -Wl,/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -o .libs/nccopy nccopy.o nciter.o chunkspec.o utils.o dimmap.o -L/opt/intel/lib/intel64 -L/opt/lfs/opt/intel/lib ../liblib/.libs/libnetcdf.so /opt/lfs/opt/intel/lib/libhdf5_hl.so /opt/lfs/opt/intel/lib/libhdf5.so -ldl -lm -lz -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib icc: warning #10237: -lcilkrts linked in dynamically, static library not available *** Testing netCDF-4 user-defined types and groups. Warning! ***HDF5 library version mismatched error*** The HDF5 header files used to compile this application do not match the version used by the HDF5 library to which this application is linked. Data corruption or segmentation faults may occur if the application continues. This can happen when an application was compiled by one version of HDF5 but linked with a different version of static or shared HDF5 library. You should recompile the application or check your shared library related settings such as 'LD_LIBRARY_PATH'. You can, at your own risk, disable this warning by setting the environment variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'. Setting it to 2 or higher will suppress the warning messages totally. Headers are 1.8.12, library is 1.8.17 $ export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel -I/opt/lfs/opt/intel/include' $ export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel -I/opt/lfs/opt/intel/include' icc: warning #10237: -lcilkrts linked in dynamically, static library not available $ unset CFLAGS CXXFLAGS CPPFLAGS F77 F90 FC CPP CXXCPP FFLAGS FCFLAGS Fix: desinstalar librerias/binarios anteriores de sus carpetas : fs:~/sources/hdf5-1.8.17/build$ .././configure --prefix=/opt/lfs/usr --enable-shared --enable-fortran --enable-cxx CC=gcc CXX=g++ CFLAGS='-O3 -march=native -funroll-loops' CPPFLAGS='-O3 -march=native -funroll-loops' CXXFLAGS='-O3 -march=native -funroll-loops' FC=gfortran LDFLAGS='-L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib' lfs:~/sources/hdf5-1.8.17/build-intel$ .././configure --prefix=/opt/lfs/opt/intel --enable-shared --enable-fortran --enable-cxx CC=icc CXX=icpc CFLAGS='-O3 -xHost -ip' CPPFLAGS='-O3 -xHost -ip' CXXFLAGS='-O3 -xHost -ip' FFLAGS='-O3 -xHost -ip' FCFLAGS='-O3 -xHost -ip' FC=ifort LDFLAGS='-L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' ============================================================= NETCDF-4.4 (intel): .././configure --disable-dap --prefix=/usr/local/intel CC=icc CXX=icpc FC=ifort CFLAGS='-O3 -xHost -ip' CPPFLAGS='-O3 -xHost -ip' FFLAGS='-O3 -xHost -ip' FCFLAGS='-O3 -xHost -ip' LDFLAGS='-L/usr/local/intel/lib -Wl,-rpath -Wl,/usr/local/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' NetCDF-4.4 (gnu): lfs:~/sources/netcdf-4.4.0/build-gnu$ .././configure --disable-dap --prefix=/opt/lfs/usr CC='x86_64-unknown-linux-gnu-gcc' CPPFLAGS='-I/opt/lfs/usr/include' LDFLAGS='-L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib' NetCDF-fortran-4.4 (intel) lfs:~/sources/netcdf-fortran-4.4.4/build-intel$ .././configure --prefix=/opt/lfs/opt/intel CC=icc CXX=icpc FC=ifort CPPFLAGS='-I. -I.. -I/opt/lfs/opt/intel/include -O3 -xHost -ip' CFLAGS='-O3 -xHost -ip' FFLAGS='-O3 -xHost -ip' LDFLAGS='-L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' [wilderman@sullivan build-intel]$ .././configure --disable-dap --prefix=/usr/local/intel CC=icc CXX=icpc FC=ifort CFLAGS='-O3 -xHost -ip -I. -I.. -I/usr/local/intel/include' CPPFLAGS='-I. -I.. -I/usr/local/intel/include -O3 -xHost -ip' FFLAGS='-O3 -xHost -ip -I. -I.. -I/usr/local/intel/include' FCFLAGS='-O3 -xHost -ip -I. -I.. -I/usr/local/intel/include' LDFLAGS='-L/usr/local/intel/lib -Wl,-rpath -Wl,/usr/local/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' libpng(intel) [wilderman@sullivan libpng-1.6.21]$ ./configure --prefix=/usr/local/intel CC=icc FC=ifort CFLAGS='-O3 -ip -xHost' LDFLAGS='-L/opt/intelxe/lib/intel64 -Wl,-rpath -Wl,/opt/intelxe/lib/intel64 -L/usr/local/intelxe/lib -Wl,-rpath -Wl,/usr/local/intelxe/lib' NetCDF-fortran-4.4 (gnu): WRFV3.8::intel intelxe::intel 2016.Update1 configure.wrf (opcion 14 (sm)) LDFLAGS_LOCAL = -ip -L/opt/intelxe/lib/intel64 -Wl,-rpath -Wl,/opt/intelxe/lib/intel64 -L/usr/local/intel/lib -Wl,-rpath -Wl,/usr/local/intel/lib ESMF_IO_LIB = -L$(WRF_SRC_ROOT_DIR)/external/esmf_time_f90 -Wl,-rpath -Wl,$(WRF_SRC_ROOT_DIR)/external/esmf_time_f90 -lesmf_time -Wl,-rpath -Wl,/opt/intelxe/lib/intel64 -liomp5 ESMF_IO_LIB_EXT = -L$(WRF_SRC_ROOT_DIR)/external/esmf_time_f90 -Wl,$(WRF_SRC_ROOT_DIR)/external/esmf_time_f90 -lesmf_time -Wl,-rpath -Wl,/opt/intel/libxe/intel64 -liomp5 LIB_EXTERNAL = \ -L$(WRF_SRC_ROOT_DIR)/external/io_netcdf -lwrfio_nf -L/usr/local/intel/lib -lnetcdff -lnetcdf -L$(WRF_SRC_ROOT_DIR)/external/io_grib2 -lio_grib2 -L/usr/local/intel/lib -ljasper -L/usr/local/intel/lib -lhdf5_fortran -lhdf5 -lm -lz NETCDFPATH = /usr/local/intel HDF5PATH = /usr/local/intel [wilderman@sullivan WRFV3]$ ldd main/wrf.exe linux-vdso.so.1 (0x00007ffdbcafe000) libiomp5.so => /opt/intelxe/lib/intel64/libiomp5.so (0x00007f7770405000) libnetcdff.so.6 => /usr/local/intel/lib/libnetcdff.so.6 (0x00007f776ff66000) libnetcdf.so.11 => /usr/local/intel/lib/libnetcdf.so.11 (0x00007f776fbef000) libhdf5_fortran.so.10 => /usr/local/intel/lib/libhdf5_fortran.so.10 (0x00007f776f9a7000) libhdf5.so.10 => /usr/local/intel/lib/libhdf5.so.10 (0x00007f776f3f3000) libm.so.6 => /tools/lib/libm.so.6 (0x00007f776f0ee000) libz.so.1 => /usr/local/intel/lib/libz.so.1 (0x00007f776eed3000) libpthread.so.0 => /tools/lib/libpthread.so.0 (0x00007f776ecb6000) libc.so.6 => /tools/lib/libc.so.6 (0x00007f776e915000) libgcc_s.so.1 => /tools/lib/libgcc_s.so.1 (0x00007f776e6ff000) libdl.so.2 => /tools/lib/libdl.so.2 (0x00007f776e4fb000) /tools/lib64/ld-linux-x86-64.so.2 (0x00007f7770747000) libifport.so.5 => /opt/intelxe/lib/intel64/libifport.so.5 (0x00007f776e2cc000) libifcore.so.5 => /opt/intelxe/lib/intel64/libifcore.so.5 (0x00007f776df68000) libimf.so => /opt/intelxe/lib/intel64/libimf.so (0x00007f776da6c000) libsvml.so => /opt/intelxe/lib/intel64/libsvml.so (0x00007f776cbad000) libintlc.so.5 => /opt/intelxe/lib/intel64/libintlc.so.5 (0x00007f776c941000) libhdf5_hl.so.10 => /usr/local/intel/lib/libhdf5_hl.so.10 (0x00007f776c719000) libirng.so => /opt/intelxe/lib/intel64/libirng.so (0x00007f776c511000) WPS::intel configure.wps COMPRESSION_LIBS = -L/usr/local/intel/lib -Wl,-rpath -Wl,/usr/local/intel/lib -ljasper -lpng -lz COMPRESSION_INC = -I/usr/local/intel/include LDFLAGS = -Wl,-rpath -Wl,/usr/local/intel/lib -Wl,-rpath -Wl,/opt/intelxe/lib/intel64 -liomp5 [wilderman@sullivan WPS]$ ./compile 2>&1 | tee compile.log buscar un simbolo en una libreria [wilderman@sullivan intel64_lin]$ nm -o * | grep __kmpc_global_thread_num libioffload_target.so.5: U __kmpc_global_thread_num@@VERSION libiomp5.a:kmp_csupport.o:0000000000000040 T __kmpc_global_thread_num libiomp5.dbg:000000000004b050 T __kmpc_global_thread_num libiomp5.so:000000000004b050 T __kmpc_global_thread_num libmatmul.a:s__gemm_omp_v1_drv.o: U __kmpc_global_thread_num libmatmul.a:s__gemm_drv.o: U __kmpc_global_thread_num libmatmul.a:d__gemm_omp_v1_drv.o: U __kmpc_global_thread_num libmatmul.a:d__gemm_drv.o: U __kmpc_global_thread_num libmatmul.a:z__gemm_omp_v1_drv.o: U __kmpc_global_thread_num libmatmul.a:z__gemm_drv.o: U __kmpc_global_thread_num libmatmul.a:c__gemm_omp_v1_drv.o: U __kmpc_global_thread_num libmatmul.a:c__gemm_drv.o: U __kmpc_global_thread_num libmatmul.a:cgemv_omp_matmul.o: U __kmpc_global_thread_num libmatmul.a:zgemv_omp_matmul.o: U __kmpc_global_thread_num libmatmul.a:sgemv_omp_matmul.o: U __kmpc_global_thread_num libmatmul.a:dgemv_omp_matmul.o: U __kmpc_global_thread_num ===========0000000======= WRFV3.8 (GCC/GFortran 5.3 toolchain) environment JASPERINC=/opt/lfs/usr/include JASPERLIB=/opt/lfs/usr/lib HDF5=/opt/lfs/usr NETCDF=/opt/lfs/usr export JASPERINC JASPERLIB HDF5 NETCDF configure.wrf: SFC = /tools/bin/gfortran SCC = /tools/bin/gcc CCOMP = /tools/bin/gcc DM_FC = mpif90 DM_CC = mpicc -DMPI2_SUPPORT FC = time $(DM_FC) -I/opt/lfs/include CFLAGS_LOCAL = -w -O3 -c -I/opt/lfs/include LDFLAGS_LOCAL = -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib -L/opt/lfs/lib -Wl,-rpath -Wl,/opt/lfs/lib LIB_EXTERNAL = \ -L$(WRF_SRC_ROOT_DIR)/external/io_netcdf -lwrfio_nf -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib -lnetcdff -lnetcdf -L$(WRF_SRC_ROOT_DIR)/external/io_grib2 -lio_grib2 -L/opt/lfs/usr/lib -ljasper -L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib -lhdf5_fortran -lhdf5 -lm -lz -L/opt/lfs/lib -Wl,-rpath -Wl,/opt/lfs/lib WRFV3.8 (Intel 2014 + toolchain) environment JASPERINC=/opt/lfs/opt/intel/include JASPERLIB=/opt/lfs/opt/intel/lib HDF5=/opt/lfs/opt/intel NETCDF=/opt/lfs/usr #GNU-Toolchain DM_FC = /opt/lfs/opt/intel/bin/mpif90 DM_CC = /opt/lfs/opt/intel/bin/mpicc -DMPI2_SUPPORT FC = time $(DM_FC) -I/opt/lfs/opt/intel/include LDFLAGS_LOCAL = -ip -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 -L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib LIB_EXTERNAL = \ -L$(WRF_SRC_ROOT_DIR)/external/io_netcdf -lwrfio_nf -L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -lnetcdff -lnetcdf -L$(WRF_SRC_ROOT_DIR)/external/io_grib2 -lio_grib2 -L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -ljasper -L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -lhdf5_fortran -lhdf5 -lm -lz -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64 NETCDFPATH = /opt/lfs/opt/intel HDF5PATH = /opt/lfs/opt/intel export JASPERINC JASPERLIB HDF5 NETCDF [wilderman@sullivan main]$ ./real.exe [sullivan.dimar.mil.co:12219] mca: base: component_find: unable to open /opt/lfs/usr/lib/openmpi/mca_btl_scif: libscif.so.0: cannot open shared object file: No such file or directory (ignored) error en openmpi-1.10.2 (gcc): [wilderman@sullivan main]$ ldd /opt/lfs/usr/lib/openmpi/mca_btl_scif.so linux-vdso.so.1 (0x00007fff66136000) libscif.so.0 => not found librt.so.1 => /tools/lib/librt.so.1 (0x00002ba717312000) libm.so.6 => /tools/lib/libm.so.6 (0x00002ba71751a000) libutil.so.1 => /tools/lib/libutil.so.1 (0x00002ba71781f000) libpthread.so.0 => /tools/lib/libpthread.so.0 (0x00002ba717a22000) libc.so.6 => /tools/lib/libc.so.6 (0x00002ba717c3f000) /tools/lib64/ld-linux-x86-64.so.2 (0x00002ba716ee6000) Recompilar OpenMPI!!! GNU: $ ../configure --build=x86_64-unknown-linux-gnu --prefix=/opt/lfs/usr --without-scif CC=x86_64-unknown-linux-gnu-gcc CXX=x86_64-unknown-linux-gnu-g++ FC=x86_64-unknown-linux-gnu-gfortran CXXFLAGS=-O2 CPPFLAGS=-O2 CFLAGS=-O2 FFLAGS=-O2 LDFLAGS='-L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib' [wilderman@sullivan build.xeon]$ make LDFLAGS='-L/opt/lfs/usr/lib -Wl,-rpath -Wl,/opt/lfs/usr/lib' 2>&1 | tee make.log Intel: --without-scif = deshabilita el uso de aceleradores Phi. [wilderman@sullivan build.intel]$ ../configure --build=x86_64-unknown-linux-gnu --prefix=/opt/lfs/opt/intel --without-scif CC=icc CXX=icpc FC=ifort CFLAGS='-O3 -xHost -ip' CPPFLAGS='-O3 -xHost -ip' FFLAGS='-O3 -xHost -ip' FCFLAGS='-O3 -xHost -ip' LDFLAGS='-L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' [wilderman@sullivan build.intel]$ make LDFLAGS='-L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' 2>&1 | tee make.log Parallel HDF5: [wilderman@sullivan build.intel]$ ../configure --prefix=/opt/lfs/opt/intel --enable-parallel --enable-shared --enable-fortran CC=/opt/lfs/opt/intel/bin/mpicc CXX=/opt/lfs/opt/intel/bin/mpic++ FC=/opt/lfs/opt/intel/bin/mpif90 LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' $ make LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' 2>&1 | tee make.log [wilderman@sullivan build.intel]$ HDF5_PARAPREFIX=pfs:/tmp [wilderman@sullivan build.intel]$ export HDF5_PARAPREFIX [wilderman@sullivan build.intel]$ make LDFLAGS='-L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' check errors: ===Parallel tests in testpar begin Tue Jul 26 23:41:31 UTC 2016=== **** Hint **** Parallel test files reside in the current directory by default. Set HDF5_PARAPREFIX to use another directory. E.g., HDF5_PARAPREFIX=/PFS/user/me export HDF5_PARAPREFIX make check **** end of Hint **** make[4]: Entering directory '/home/wilderman/sources/hdf5-1.8.17/build.intel/testpar' ============================ Testing t_mpi ============================ t_mpi Test Log ============================ =================================== MPI functionality tests =================================== Proc 2: hostname=sullivan.dimar.mil.co Proc 3: hostname=sullivan.dimar.mil.co Proc 4: hostname=sullivan.dimar.mil.co Proc 5: hostname=sullivan.dimar.mil.co -------------------------------- Proc 0: *** MPIO 1 write Many read test... -------------------------------- Proc 0: hostname=sullivan.dimar.mil.co Proc 1: hostname=sullivan.dimar.mil.co Proc 5: MPI_File_open failed (MPI_ERR_IO: input/output error) Proc 2: MPI_File_open failed (MPI_ERR_IO: input/output error) Proc 3: MPI_File_open failed (MPI_ERR_IO: input/output error) Proc 4: MPI_File_open failed (MPI_ERR_IO: input/output error) Proc 1: MPI_File_open failed (MPI_ERR_IO: input/output error) Proc 0: MPI_File_open failed (MPI_ERR_IO: input/output error) ***FAILED with 6 total errors -------------------------------- Proc 0: *** MPIO File size range test... -------------------------------- MPI_Offset is signed 8 bytes integeral type Proc 2: *** Parallel ERROR *** VRFY (MPI_FILE_OPEN) failed at line 295 in ../../testpar/t_mpi.c aborting MPI processes Proc 3: *** Parallel ERROR *** VRFY (MPI_FILE_OPEN) failed at line 295 in ../../testpar/t_mpi.c aborting MPI processes Proc 0: *** Parallel ERROR *** VRFY (MPI_FILE_OPEN) failed at line 295 in ../../testpar/t_mpi.c aborting MPI processes Proc 1: *** Parallel ERROR *** VRFY (MPI_FILE_OPEN) failed at line 295 in ../../testpar/t_mpi.c aborting MPI processes Proc 4: *** Parallel ERROR *** VRFY (MPI_FILE_OPEN) failed at line 295 in ../../testpar/t_mpi.c aborting MPI processes Proc 5: *** Parallel ERROR *** VRFY (MPI_FILE_OPEN) failed at line 295 in ../../testpar/t_mpi.c aborting MPI processes -------------------------------------------------------------------------- MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD with errorcode 1. OpenMPI with -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 [wilderman@sullivan build.intel]$ ../configure --build=x86_64-unknown-linux-gnu --prefix=/opt/lfs/opt/intel --without-scif CC=icc CXX=icpc FC=ifort CFLAGS='-O3 -xHost -ip -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' CPPFLAGS='-O3 -xHost -ip' FCFLAGS='-O3 -xHost -ip' LDFLAGS='-L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' [wilderman@sullivan build.intel]$ make LDFLAGS='-L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' 2>&1 | tee make.log [wilderman@sullivan build.intel]$ make LDFLAGS='-L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' check 2>&1 | tee make.log ======= Parallel NetCDF: export CC=icc export CXX=icpc export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export F77=ifort export FC=ifort export F90=ifort export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CPP='icc -E' export CXXCPP='icpc -E' wilderman@sullivan build-intel]$ .././configure --disable-dap --prefix=/opt/lfs/opt/intel --disable-shared --enable-parallel-tests CC=/opt/lfs/opt/intel/bin/mpicc CXX=/opt/lfs/opt/intel/bin/mpic++ FC=/opt/lfs/opt/intel/bin/mpif90 LDFLAGS='-L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' ó [wilderman@sullivan build-intel]$ .././configure --disable-dap --prefix=/opt/lfs/opt/intel --enable-parallel-tests CC=/opt/lfs/opt/intel/bin/mpicc CXX=/opt/lfs/opt/intel/bin/mpic++ CFLAGS='-xHost -ip -no-prec-div -static-intel' CXXFLAGS='-xHost -ip -no-prec-div -static-intel' FC=/opt/lfs/opt/intel/bin/mpif90 FFFLAGS='-xHost -ip -no-prec-div -static-intel' LDFLAGS='-L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' [wilderman@sullivan build-intel]$ make LDFLAGS='-L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' 2>&1 | tee make.log [wilderman@sullivan build-intel]$ make LDFLAGS='-L/opt/lfs/opt/intel/lib -Wl,-rpath -Wl,/opt/lfs/opt/intel/lib -L/opt/intel/lib/intel64 -Wl,-rpath -Wl,/opt/intel/lib/intel64' check 2>&1 | tee make.log =========== [wilderman@sullivan run]$ time mpirun -np 22 ./wrf.exe real 147m49.293s user 3245m12.477s sys 3m33.565s slonin@deleyva:~/spoa/scripts/matlab/gfs$ diff -u GFS_area51.m GFS.m --- GFS_area51.m 2017-09-19 14:55:30.000000000 -0500 +++ GFS.m 2017-09-12 16:43:54.739817483 -0500 @@ -5,19 +5,22 @@ clear all clc -addpath('/spoa/scripts/matlab/gfs/nctoolbox2.0') -addpath('/spoa/scripts/matlab/gfs/mexcdf') +%addpath('/home/slonin/spoa/scripts/matlab/gfs/nctoolbox2.0') +addpath('/home/slonin/spoa/scripts/matlab/gfs/nctoolbox-1.1.3') +addpath('/home/slonin/spoa/scripts/matlab/gfs/mexcdf/netcdf_toolbox/netcdf') +addpath('/home/slonin/spoa/scripts/matlab/gfs/mexcdf/netcdf_toolbox/netcdf/nctype') +addpath('/home/slonin/spoa/scripts/matlab/gfs/mexcdf/netcdf_toolbox/netcdf/ncutility') setup_nctoolbox -punto=xlsread('puntos.xls'); +punto=xlsread('puntos02.xls'); punto(:,3)=punto(:,2)+360; -PATH ='/home/slonin/WRFV33/WPS/GFS_DATA/'; -PATH_H = '/spoa/data/caribwam/'; +PATH ='/home/slonin/spoa/data/wrf/gfs/'; +PATH_H = '/home/slonin/spoa/data/caribwam/'; load lat_mtlb.dat load lon_mtlb.dat fecha =datevec(now); -horas = 12:6:54; +horas = [12,18,24,30]; mTEM=[];mHUM=[];mdir=[];mspd=[];mPRE=[];mNUB=[]; for j=1:size(horas,2) @@ -29,16 +32,16 @@ ds=ncgeodataset(grib); % ds.variables %Precipitacion -PRE = 'Total_precipitation'; +PRE = 'Total_precipitation_surface_6_Hour_Accumulation'; %Cobertura nubosa -NUB = 'Total_cloud_cover_entire_atmosphere'; +NUB = 'Total_cloud_cover_entire_atmosphere_6_Hour_Average'; %Temperatura TEM = 'Temperature_surface'; %Humedad HUM = 'Relative_humidity_height_above_ground'; %Viento -Uw = 'U-component_of_wind_height_above_ground'; -Vw = 'V-component_of_wind_height_above_ground'; +Uw = 'u-component_of_wind_height_above_ground'; +Vw = 'v-component_of_wind_height_above_ground'; %Niv = 'height_above_ground5'; %LECTURA DE VARIABLES @@ -80,14 +83,16 @@ clear lat lon u10 v10 HUM TEM PRE NUB ur vr dir spd Uw Vw end -tiempo=[7,13,19,25,31,37,43,49]';tim =repmat(tiempo,6,1); +tiempo=[7,13,19,1]';tim =repmat(tiempo,6,1); M = [mNUB;mPRE;mTEM;mHUM;mdir;mspd];M= [tim M]; + clear mNUB mPRE mTEM mHUM mdir mspd tim ind ind1 i grib clear pTEM pHUM pdir pspd pPRE pNUB -tpron=['012';'024';'036';'048'];mph=[];mpd=[]; -for j=1:length(tpron) +tpron=['012';'024';'036'];mph=[];mpd=[]; + +for j=1:3 file=[PATH_H 'hw' tpron(j,:) '_mtlb.dat']; hw=load(file);%abro archivo %Separo la altura de la ola de la direccion @@ -103,52 +108,53 @@ end end - for l=1:6 + for l=1:6 hind = find(lon_mtlb>=punto(l,2)-0.09 & lon_mtlb<=punto(l,2)+0.09 & lat_mtlb>=punto(l,1)-0.09 & lat_mtlb<=punto(l,1)+0.09); - if isempty(hind) + if isempty(hind) else ph = hw(hind); dir = direc(hind); mpd=[mpd dir]; mph=[mph ph]; - end + end end end -clear i j l tpron hw horas hind ftime direc lon_mtlb lat_mtlb ds ph dir -ze = zeros(8,18); +clear i j l tpron hw horas hind ftime direc lon_mtlb lat_mtlb ds ph dir -mph=[mph(:,1:6);mph(:,1:6);mph(:,7:12);mph(:,7:12);mph(:,13:18);mph(:,13:18);... - mph(:,19:end);mph(:,19:end)];mph=[mph ze]; +ze = zeros(4,21); -mpd=[mpd(:,1:6);mpd(:,1:6);mpd(:,7:12);mpd(:,7:12);mpd(:,13:18);mpd(:,13:18);... - mpd(:,19:end);mpd(:,19:end)];mpd=[mpd ze]; +mph=[mph(:,1:6);mph(:,1:6);mph(:,7:12);mph(:,13:end)];mph=[mph ze]; +mpd=[mpd(:,1:6);mpd(:,1:6);mpd(:,7:12);mpd(:,13:end)];mpd=[mpd ze]; -%p = (0:1:24);VAR = {'PUNTOS','NUBOSIDAD','PRECIPITA','TEMPERATU','HUMEDAD','DIRVIENTO','MAGVIENTO','ALTURAOLA','DIROLA'}'; -p = (0:1:24);VAR = {'FEC','PUNT','NUBO','PREC','TEMP','HUME','DIRV','MAGV','ALTU','DIRO'}'; +p = (0:1:27);VAR = {'FEC','PUNTOS','NUBOSIDAD','PRECIPITA','TEMPERATU','HUMEDAD','DIRVIENTO','MAGVIENTO','ALTURAOLA','DIROLA'}'; +%p = (0:1:27);VAR = {'FEC','PUNT','NUBO','PREC','TEMP','HUME','DIRV','MAGV','ALTU','DIRO'}'; con=2; NAME={VAR{1:2,1}};NAME=(NAME)'; for i=3:10 - - for j=1:8 - con=con+1; + for j=1:4 + con=con+1 NAME{con,1} = VAR{i,1}; end end -NAME = char(NAME); Mfe = zeros(1,25);Mfe(1,1:3)= fecha(1,1:3); +NAME = char(NAME); Mfe = zeros(1,28);Mfe(1,1:3)= fecha(1,1:3); %24 rows from puntos.xls +%NAME = char(NAME); Mfe = zeros(1,28);Mfe(1,1:3)= fecha(1,1:3); -M = [M; tiempo mph;tiempo mpd];M=[p;M];M=[Mfe;M]; +M = [M; tiempo mph;tiempo mpd]; +M=[p;M];M=[Mfe;M]; MF = [NAME num2str(M)]; for i=1:size(MF,1) -FID = fopen('datapronarc.dat','a'); + + FID = fopen('datapronarc.dat','a'); fprintf(FID,'%s \r\n',MF(i,:)); end - fclose(FID); + +fclose(FID);