mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-03-06 06:14:47 +00:00
settingenviron: Set MAKEFLAGS for parallelism in ~lfs/.bashrc
This commit is contained in:
parent
e70bf8f4f4
commit
a0a803c0b0
@ -37,18 +37,6 @@
|
||||
numbers can vary by as much as dozens of minutes in some cases.</para>
|
||||
|
||||
<note>
|
||||
<para>For many modern systems with multiple processors (or cores) the
|
||||
compilation time for a package can be reduced by performing a "parallel
|
||||
make" by either setting an environment variable or telling the
|
||||
<command>make</command> program how many processors are available. For
|
||||
instance, an Intel i5-6500 CPU can support four simultaneous processes with:</para>
|
||||
|
||||
<screen role="nodump"><userinput>export MAKEFLAGS='-j4'</userinput></screen>
|
||||
|
||||
<para>or by building with:</para>
|
||||
|
||||
<screen role="nodump"><userinput>make -j4</userinput></screen>
|
||||
|
||||
<para>When multiple processors are used in this way, the SBU units in the
|
||||
book will vary even more than they normally would. In some cases, the make
|
||||
step will simply fail. Analyzing the output of the build process will also
|
||||
|
@ -195,6 +195,55 @@ EOF</userinput></screen>
|
||||
completed LFS system.</para>
|
||||
</important>
|
||||
|
||||
<para>
|
||||
For many modern systems with multiple processors (or cores) the
|
||||
compilation time for a package can be reduced by performing a "parallel
|
||||
make" by telling the make program how many processors are available via
|
||||
a command line option or an environment variable. For instance, an Intel
|
||||
Core i9-13900K processor has 8 P (performance) cores and
|
||||
16 E (efficiency) cores, and a P core can simultaneously run two threads
|
||||
so each P core are modeled as two logical cores by the Linux kernel.
|
||||
As the result there are 32 logical cores in total. One obvious way to
|
||||
use all these logical cores is allowing <command>make</command> to spawn
|
||||
up to 32 build jobs. This can be done by passing the
|
||||
<parameter>-j32</parameter> option to <command>make</command>:
|
||||
</para>
|
||||
|
||||
<screen role='nodump'><userinput>make -j32</userinput></screen>
|
||||
|
||||
<para>
|
||||
Or set the <envar>MAKEFLAGS</envar> environment variable and its
|
||||
content will be automatically used by <command>make</command> as
|
||||
command line options:
|
||||
</para>
|
||||
|
||||
<screen role='nodump'><userinput>export MAKEFLAGS=-j32</userinput></screen>
|
||||
|
||||
<important>
|
||||
<para>
|
||||
Never pass a <parameter>-j</parameter> option without a number to
|
||||
<command>make</command> or set such an option in
|
||||
<envar>MAKEFLAGS</envar>. Doing so will allow <command>make</command>
|
||||
to spawn infinite build jobs and cause system stability issue.
|
||||
</para>
|
||||
</important>
|
||||
|
||||
<para>
|
||||
To use all logical cores available for building packages in
|
||||
<xref linkend='chapter-cross-tools'/> and
|
||||
<xref linkend='chapter-temporary-tools'/>, set <envar>MAKEFLAGS</envar>
|
||||
now in <filename>.bashrc</filename>:
|
||||
</para>
|
||||
|
||||
<screen><userinput>cat >> ~/.bashrc << "EOF"
|
||||
<literal>export MAKEFLAGS=-j<replaceable>$(nproc)</replaceable></literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<para>
|
||||
Replace <replaceable>$(nproc)</replaceable> with the number of logical
|
||||
cores you want to use if you don't want to use all the logical cores.
|
||||
</para>
|
||||
|
||||
<para>Finally, to ensure the environment is fully prepared for building the
|
||||
temporary tools, force the <command>bash</command> shell to read
|
||||
the new user profile:</para>
|
||||
|
Loading…
Reference in New Issue
Block a user