mirror of
https://github.com/Zeckmathederg/glfs.git
synced 2025-01-24 15:12:11 +08:00
054deb517a
Link issue has to deal with /introduction/welcome/important.xml where var &blfs-svn; was spelt as &blvs-svn;.
158 lines
5.2 KiB
XML
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>
|