Important Information

#### Gaming Linux® From Scratch - Version 13.0

### Chapter 1. Welcome to GLFS

- Prev

  Contact Information

- Next

  Multilib

- Up
- Home

# Important Information

BLFS has more information regarding compilation, /usr vs /usr/local, boot scripts, etc. at https://www.linuxfromscratch.org/blfs/view/13.0-systemd/introduction/important.html. Unlike this book, this would be a chapter in BLFS. A lot of that information has been omitted as this book is more linear and doesn't follow how BLFS follows. However, we will cover some bases here.

## Which Instructions to Follow

This book is different from the main LFS and BLFS books as it also has lib32 installation instructions. This is bound to cause confusion.

When you see “Installation of ...”, those instructions should be followed if you need that package. As you progress, you may come across a different format, and the book will instruct you on what to follow at that point. You should read Chapter 2, Multilib firstly, and second, you will probably have to do more than the normal installation.

This is where the sections labeled “lib32 Installation of ...” come in. These sections provide 32-bit libraries for 32-bit software compatibility, ie. multilib support. If you don't need the 32-bit libraries from a given package, you may skip the lib32 installation instructions of that package.

## Building software

Building software on GLFS is identical to how it's done in the BLFS books, along with having lib32 compilation instructions. It goes without saying firstmost that you should have `MAKEFLAGS` set to save yourself a lot of time. This is useful for the make utility to use the amount of threads that you both want and have.

    export MAKEFLAGS='-jx'

Replace `x` with the amount of threads you have. You can check the amount of threads you have with:

    grep processor /proc/cpuinfo

### Important

Make sure that you have enough RAM for your system! A general method is having 2.5G per thread that is thrown at make. For instance, if you want to use 6 threads, multiply 6 by 2.5 (which is 15), then make sure you have 15G of RAM. If you don't have that RAM, try and limit the threads you throw at make or allot swap to meet that requirement.

Next is compiling for lib32. There are many packages which will have a lib32 counterpart. If you just got done with a normal compilation of a package and wish to do a lib32 compilation of that same package, make sure to clean the directory first:

    make distclean

Or, if you made a build directory, do this in the build directory:

    rm -rf *

Then proceed with the lib32 compilation instructions.

Generally, the format of targeting lib32 goes like this:

For ./configure:

    CC="gcc -m32" CXX="g++ -m32"         \
    PKG_CONFIG_PATH=/usr/lib32/pkgconfig \
    ./configure --prefix=/usr            \
                --libdir=/usr/lib32      \
                --host=i686-pc-linux-gnu &&

    make &&

    make DESTDIR=$PWD/DESTDIR install     &&
    cp -vr DESTDIR/usr/lib32/* /usr/lib32 &&
    rm -rf DESTDIR                        &&
    ldconfig

For meson:

    mkdir build &&
    cd    build &&

    meson setup --prefix=/usr       \
                --buildtype=release \
                --cross-file=lib32  \
                .. &&
    ninja &&

    DESTDIR=$PWD/DESTDIR ninja install    &&
    cp -vr DESTDIR/usr/lib32/* /usr/lib32 &&
    rm -rf DESTDIR                        &&
    ldconfig

For cmake:

    mkdir build &&
    cd    build &&

    CC="gcc -m32" CXX="g++ -m32"           \
    PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
    cmake -D CMAKE_INSTALL_PREFIX=/usr     \
          -D CMAKE_INSTALL_LIBDIR=lib32    \
          -D CMAKE_BUILD_TYPE=Release      \
          .. &&

    make &&

    make DESTDIR=$PWD/DESTDIR install     &&
    cp -vr DESTDIR/usr/lib32/* /usr/lib32 &&
    rm -rf DESTDIR                        &&
    ldconfig

### Note

After you do a DESTDIR installation, it is recommended to to use file on one of the libraries in `DESTDIR/usr/lib32`. An output of such a command for a lib32 build of a library should be comparable to the following:

    ELF 32-bit LSB shared object, Intel i386, version 1 (SYSV), dynamically linked ...

Note the `32-bit LSB shared object` part. A 64-bit library would show up as a `64-bit LSB shared object`.

- Prev

  Contact Information

- Next

  Multilib

- Up
- Home