glfs/introduction/welcome/important.xml
Zeckmathederg 054deb517a Adjusted sections pertaining and fix link issue.
Link issue has to deal with /introduction/welcome/important.xml where var &blfs-svn; was spelt as &blvs-svn;.
2024-07-06 05:47:01 -06:00

158 lines
5.2 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
]>
<sect1 id="important" xreflabel="Important Information">
<?dbhtml filename="important.html"?>
<title>Important Information</title>
<para>
BLFS has more information regarding compilation, /usr vs /usr/local,
boot scripts, etc. at
<ulink url="&blfs-svn;/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.
</para>
<sect2>
<title>Init System</title>
<para>
This book doesn't have instructions for Systemd. It is meant for SysV
LFS systems, but if you find or make your own bootscripts, you can
use the instructions in this book on a system that has Runit or
OpenRC. Systemd will take more work and the process involves checking
<ulink url="&blfs-svn;"/> and compare the instructions for each package.
There aren't many packages that require this process except ones that
may need to be started as a service. <xref linkend="dbus"/> is especially
different so watch out for it if you are using Systemd. The reason for not
using Systemd is that Systemd makes things more complicated, a lot of users
use more simplistic init systems like SysV for their LFS system, and including
instructions for both can result in two book versions which would be
rather inconvenient.
</para>
</sect2>
<sect2>
<title>Building software</title>
<para>
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 <envar>MAKEFLAGS</envar>
set to save yourself a lot of time. This is useful for the <command>make
</command> utility to use the amount of threads that you both want
and have.
</para>
<screen><userinput>export MAKEFLAGS='-jx'</userinput></screen>
<para>
Replace <option>x</option> with the amount of threads you have.
You can check the amount of threads you have with:
</para>
<screen><userinput>grep processor /proc/cpuinfo</userinput></screen>
<important><para>
Make sure that you have enough RAM for your system!
A general method is having 2.5G per thread that is thrown at
<command>make</command>. 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
<command>make</command>.
</para></important>
<para>
Next is compiling for 32-bit. 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 32-bit compilation of that same package,
make sure to clean the directory first:
</para>
<screen><userinput>make distclean</userinput></screen>
<para>Or, if you made a build directory:</para>
<screen><userinput>rm -rf build</userinput></screen>
<para>Then proceed with the 32-bit compilation instructions.</para>
<para>
Generally, the format of targetting 32-bit goes like this:
</para>
<para>For <command>./configure</command>:</para>
<screen><userinput>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
</userinput></screen>
<para>For <command>meson</command>:</para>
<screen><userinput>mkdir -v build
cd build
CC="gcc -m32" CXX="g++ -m32" PKG_CONFIG_PATH=/usr/lib32/pkgconfig \
meson setup .. --prefix=/usr --libdir=/usr/lib32
ninja
DESTDIR=$PWD/DESTDIR ninja install
cp -vr DESTDIR/usr/lib32/* /usr/lib32
rm -rf DESTDIR
ldconfig</userinput></screen>
<para>For <command>cmake</command>:</para>
<screen><userinput>export CFLAGS="-m32"
export CXXFLAGS="-m32"
export ASFLAGS="--32"
export PKG_CONFIG_PATH="/usr/lib32/pkgconfig"
mkdir -v build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib32
make
make DESTDIR=$PWD/DESTDIR install
cp -vr DESTDIR/usr/lib32/* /usr/lib32
rm -rf DESTDIR
ldconfig
unset CFLAGS CXXFLAGS ASFLAGS PKG_CONFIG_PATH</userinput></screen>
<note>
<para>
After you do a DESTDIR installation, it is recommended to
to use <command>file</command> on one of the libraries in
<filename>DESTDIR/usr/lib32</filename>. An output of such
a command for a 32-bit build of a library should be
comparable to the following:
</para>
<screen><computeroutput>ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked</computeroutput></screen>
<para>
Note the <computeroutput>32-bit LSB shared object</computeroutput> part.
A 64-bit library would show as a <computeroutput>64-bit LSB shared
object</computeroutput>.
</para>
</note>
</sect2>
</sect1>