mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-06-18 19:29:21 +01:00
Compare commits
517 Commits
trunk
...
ml-12.0rc1
Author | SHA1 | Date | |
---|---|---|---|
|
6fd9f0658c | ||
|
32db9062aa | ||
|
e56b7f5b63 | ||
|
974c6b13a1 | ||
|
2b17a82ddc | ||
|
fe625c6b3d | ||
|
26e4b86f18 | ||
|
1c0eafc71e | ||
|
5c9689cc50 | ||
|
03d43068f4 | ||
|
45708d879e | ||
|
60a942a33d | ||
|
5a1f88329c | ||
|
feb8dee090 | ||
|
3fb162fd28 | ||
|
58634ab2e3 | ||
|
741890da01 | ||
|
3b3454a7b2 | ||
|
69793ff11e | ||
|
01d1eba049 | ||
|
3a4f80cf24 | ||
|
72e10c9fc6 | ||
|
3ecf6ae99d | ||
|
6f86139316 | ||
|
3a01ce9f4c | ||
|
da2e8cba81 | ||
|
7f440a607c | ||
|
b3d94f390c | ||
|
9f0c94b408 | ||
|
2cf3d3ac59 | ||
|
df9c52eca4 | ||
|
9a674b492c | ||
|
67b901f0e5 | ||
|
7d40eeb537 | ||
|
9cdd53b560 | ||
|
7b3d536d9e | ||
|
51f6a99315 | ||
|
b8707993c4 | ||
|
ac3fcdb1f5 | ||
|
dab8de0dcd | ||
|
16e9e782b2 | ||
|
4e2fc61312 | ||
|
988db38c63 | ||
|
0e223a6d24 | ||
|
22487156d1 | ||
|
47326fd710 | ||
|
165314a9c1 | ||
|
48ac979ab4 | ||
|
5e61857856 | ||
|
5e5dc89211 | ||
|
e8e771a013 | ||
|
e233b61123 | ||
|
031db1bbb7 | ||
|
3b4ac52d47 | ||
|
adcaa44de6 | ||
|
5975e7e72e | ||
|
b98c8b8659 | ||
|
48df889753 | ||
|
7a51953cac | ||
|
796b226aa2 | ||
|
5a0eccd161 | ||
|
eac5d6fe97 | ||
|
ad897739dc | ||
|
70617e86c9 | ||
|
22f3dd7d68 | ||
|
46ada7201e | ||
|
864c66d3a0 | ||
|
c33354ca4d | ||
|
1c0bd9036f | ||
|
9eebb0e5c2 | ||
|
960710eac0 | ||
|
fef648d8d4 | ||
|
866916e08c | ||
|
898d71a949 | ||
|
b5b704a30c | ||
|
31e6ccb2cb | ||
|
db84777ce9 | ||
|
2858f02052 | ||
|
ce49ad6473 | ||
|
d09e490fb2 | ||
|
4e897cf409 | ||
|
d8bc5bdfb6 | ||
|
23c21ef00a | ||
|
b6c69478d1 | ||
|
e9a5bd5000 | ||
|
4096cdff24 | ||
|
bef6431de3 | ||
|
3791d23718 | ||
|
7ab3f9f102 | ||
|
6257c0f144 | ||
|
d8cc3893ff | ||
|
fae43efcf4 | ||
|
37df48e8c2 | ||
|
9ced77ce59 | ||
|
1f9e7d5769 | ||
|
9831431078 | ||
|
607ca5a486 | ||
|
d8521f6eae | ||
|
aa68b0c3db | ||
|
b697c87fe9 | ||
|
a2434bd4c1 | ||
|
84958453db | ||
|
c9ae6a4b64 | ||
|
7cf73541ef | ||
|
6cb86af1ce | ||
|
5b6d5c849f | ||
|
325db8fc5e | ||
|
0f46bd2490 | ||
|
e7de61ebc6 | ||
|
aad28944bc | ||
|
41631283cb | ||
|
1baad3a782 | ||
|
966c6a9661 | ||
|
3a020ac9b1 | ||
|
219e4043ef | ||
|
a15d3393af | ||
|
bfd92cf3b4 | ||
|
625eab877e | ||
|
a8de3b44d4 | ||
|
47c0603838 | ||
|
101d00d2a7 | ||
|
692f8de8ad | ||
|
410c6f8c01 | ||
|
6ece6ecc90 | ||
|
5c258ba087 | ||
|
b094e3f434 | ||
|
dc606d8560 | ||
|
28a0e48811 | ||
|
0a12f0a939 | ||
|
f8c7e95786 | ||
|
efd28359d3 | ||
|
156a414eb6 | ||
|
df5d0e3ebd | ||
|
7b4ec8465a | ||
|
cabb60df06 | ||
|
b1c68c7ea1 | ||
|
43063fe19c | ||
|
9237700f4f | ||
|
f0cbef54b1 | ||
|
777f469b6c | ||
|
46405a5bd2 | ||
|
8d5322ed52 | ||
|
16a1647c6b | ||
|
a03b7d95dd | ||
|
41f609fee6 | ||
|
2106da208d | ||
|
0780176b25 | ||
|
cb7745e2c2 | ||
|
381c8a7cb4 | ||
|
5f3a32820a | ||
|
90fcd12a56 | ||
|
a31b65a6fb | ||
|
10d197a05d | ||
|
8c586d262d | ||
|
f8e4cf6bd1 | ||
|
1a76da03d8 | ||
|
07fd8bf8da | ||
|
981e0c4968 | ||
|
f9e8271245 | ||
|
ebe10f6e42 | ||
|
2ebdd8cd27 | ||
|
a8af0c850c | ||
|
353b104e35 | ||
|
87f8108718 | ||
|
6c4d9d018a | ||
|
1308af80d1 | ||
|
44e2a0487d | ||
|
e5de5d489f | ||
|
0875e7d4e5 | ||
|
713ad54350 | ||
|
f3b2f16713 | ||
|
c093e6b9d5 | ||
|
f29824e561 | ||
|
a28ea0a572 | ||
|
9d18322451 | ||
|
21a9c25f43 | ||
|
1835fca016 | ||
|
c1a6423d0c | ||
|
c49c1fb77f | ||
|
530771a7bb | ||
|
3c20ad9381 | ||
|
2498bb8167 | ||
|
b2cbe93960 | ||
|
f867843417 | ||
|
b17c6b2bc7 | ||
|
69e41eae26 | ||
|
b92cf89b16 | ||
|
d8c9a43f29 | ||
|
f8a51225ff | ||
|
192dda3521 | ||
|
fd4792b275 | ||
|
9282602849 | ||
|
b4516c2563 | ||
|
a171781c75 | ||
|
c84195d1f8 | ||
|
8bde866e85 | ||
|
a151e0979b | ||
|
2928a11981 | ||
|
3ebe8768cc | ||
|
d95ff154ed | ||
|
f4e814c2e9 | ||
|
1c784d290c | ||
|
9c07177360 | ||
|
f8018d2ce5 | ||
|
58247ddf0f | ||
|
8b83249bf7 | ||
|
f96a6d4272 | ||
|
0160d68e19 | ||
|
dcb4788f99 | ||
|
e15b03bf53 | ||
|
4605657f73 | ||
|
4a3af377ef | ||
|
734c56f002 | ||
|
bdb4c909d5 | ||
|
d3e7e98da4 | ||
|
e8d4ea4b97 | ||
|
77f8d5758f | ||
|
53efe27294 | ||
|
642412110b | ||
|
3c2b81973f | ||
|
588c7a0492 | ||
|
3a72ffa858 | ||
|
2ca9d8fb04 | ||
|
c48cc91c55 | ||
|
481b2e0584 | ||
|
65ac2fdf48 | ||
|
80d370ba99 | ||
|
20d3801d62 | ||
|
cd77c31151 | ||
|
644d5e06d7 | ||
|
1937fe0c15 | ||
|
caf32c82d6 | ||
|
03cd145c43 | ||
|
540a8bc67e | ||
|
992a95ce05 | ||
|
9399bf9a96 | ||
|
9ea5b3dc06 | ||
|
11b1e35880 | ||
|
070e36cd7e | ||
|
a7e5537889 | ||
|
1b85bf1bb6 | ||
|
355d7610df | ||
|
75af69e454 | ||
|
051c1608d9 | ||
|
acd14bc9f5 | ||
|
60093fdb51 | ||
|
9b0642ad34 | ||
|
56f8a0097e | ||
|
bae1378181 | ||
|
c24dafb886 | ||
|
377270bda8 | ||
|
85acfcb0c8 | ||
|
02c702c62e | ||
|
d9bec1e96a | ||
|
5ffa04b535 | ||
|
53beb36860 | ||
|
14d25ef29c | ||
|
9c12b9366f | ||
|
f7cac90fce | ||
|
856169b6af | ||
|
f0275e9623 | ||
|
3b70f926ce | ||
|
77ea132a9f | ||
|
bb19832d67 | ||
|
738a4c13cd | ||
|
7158d799ac | ||
|
4513d8e943 | ||
|
bf8012e6d5 | ||
|
64cae89ff8 | ||
|
61f1d15932 | ||
|
2195c1e800 | ||
|
2590473cf0 | ||
|
3e09569e0d | ||
|
51d1584808 | ||
|
15a5fc904a | ||
|
8f3b8fa415 | ||
|
c87aec23f2 | ||
|
cc37d96360 | ||
|
946cfd7bf1 | ||
|
e130fa2cf3 | ||
|
ad63979a20 | ||
|
d960243410 | ||
|
cfa3be5069 | ||
|
c4595c3bd1 | ||
|
78c26601df | ||
|
1e15437f33 | ||
|
f94c8ba3be | ||
|
aa95507be6 | ||
|
8598141e17 | ||
|
9d1c90331a | ||
|
af974a9c05 | ||
|
43a5dd6043 | ||
|
bb2febd46a | ||
|
0fd2370f61 | ||
|
af4bd5774b | ||
|
0eb19f0f79 | ||
|
dbcb9f4049 | ||
|
0ca938376b | ||
|
861d9a4b2e | ||
|
5d6e55744f | ||
|
7abb6a9fef | ||
|
eecc4e73d7 | ||
|
a08b5f01cb | ||
|
b010eeca35 | ||
|
d24dc0f95d | ||
|
cd67d000ae | ||
|
f3fa14326a | ||
|
a9fea2fb19 | ||
|
384c707b7f | ||
|
a150e73825 | ||
|
b08c45151a | ||
|
f08c6def04 | ||
|
4a74a6fd42 | ||
|
00696e1dd9 | ||
|
d352b982d6 | ||
|
114393c298 | ||
|
0ab6aa31e4 | ||
|
57e2684d5f | ||
|
08a636839d | ||
|
0b5f7d87c7 | ||
|
02d8168679 | ||
|
7d6604b01c | ||
|
60870bc1de | ||
|
716db1f765 | ||
|
e68002242f | ||
|
185615ad5e | ||
|
89773145de | ||
|
d2e7db424f | ||
|
8c1731d797 | ||
|
2bad57f3d8 | ||
|
0fd35e0640 | ||
|
69d280f4ba | ||
|
fd6a5f8dd5 | ||
|
c397cd1229 | ||
|
e05a52a6ef | ||
|
08c33f79bc | ||
|
edba175c42 | ||
|
a98222651c | ||
|
c84c636c1b | ||
|
3330d51805 | ||
|
eeecd8910f | ||
|
9b90ad1a0f | ||
|
85d9695ad8 | ||
|
802438754c | ||
|
cd3fd92d82 | ||
|
b51c338c8a | ||
|
c28569be5b | ||
|
835c1c8ac4 | ||
|
b8d5542c28 | ||
|
81f8f6e436 | ||
|
fc01165d64 | ||
|
2dfe1348bd | ||
|
f5b747c56f | ||
|
31ff88ba10 | ||
|
66bfc2bb56 | ||
|
6ff520fb98 | ||
|
16cdca7b48 | ||
|
ad40530f12 | ||
|
00e8b5325a | ||
|
64a306d76a | ||
|
85cd74c2cb | ||
|
3388c22918 | ||
|
f18f2d6134 | ||
|
cfb8eeac69 | ||
|
118b207b4a | ||
|
4d7d2c047f | ||
|
dabd16bcf6 | ||
|
3999c22ebf | ||
|
0906e3caf3 | ||
|
9600ece7df | ||
|
22547b2e54 | ||
|
aea9d3b7ad | ||
|
ecf55d8e08 | ||
|
d49a03582a | ||
|
0939e5196f | ||
|
2ab0d9caf5 | ||
|
cf65195a94 | ||
|
641ab9bee7 | ||
|
c5750ecfca | ||
|
146e56ad0c | ||
|
afc922f537 | ||
|
3a303528e6 | ||
|
faab037d6d | ||
|
6e9ca9918b | ||
|
dd79d3f5ad | ||
|
6a724046cf | ||
|
f780602ae9 | ||
|
e3835ace0c | ||
|
f57735ecba | ||
|
5d6b72b6f2 | ||
|
5f76506d41 | ||
|
f461a0f200 | ||
|
2838013bc5 | ||
|
0f11dbdc11 | ||
|
25519ef261 | ||
|
b5f4b4adae | ||
|
d31877876d | ||
|
f081763f39 | ||
|
adcb9c035c | ||
|
8fbd2fb120 | ||
|
70aadfbaf4 | ||
|
32f47b1fb5 | ||
|
f34f267f04 | ||
|
76531f2977 | ||
|
30fb4c0470 | ||
|
e04bf44aa9 | ||
|
d4b521822c | ||
|
2606939372 | ||
|
0ebda11158 | ||
|
51c01bff45 | ||
|
3de7f52194 | ||
|
df462a9511 | ||
|
0e9fb93256 | ||
|
bfee8ec9c9 | ||
|
803a28b26f | ||
|
88bdbb7015 | ||
|
2db19cb07a | ||
|
feed564dfe | ||
|
c74edb30fd | ||
|
6cc87753ec | ||
|
0929ec5926 | ||
|
61385cad43 | ||
|
ceebda5df5 | ||
|
eef83eaa05 | ||
|
b4dce40f7c | ||
|
4c8c1288b8 | ||
|
a5c280368e | ||
|
9da9d0146a | ||
|
edd83dcce1 | ||
|
402226e604 | ||
|
38de42d0ed | ||
|
8acfbf673d | ||
|
16caca2b75 | ||
|
fb95c5c598 | ||
|
e28ad21163 | ||
|
2d66549fae | ||
|
a2ef756a47 | ||
|
1b1a5e7238 | ||
|
ee1eb70ab2 | ||
|
d7e0db5ccd | ||
|
4ea78e038f | ||
|
032dc4e8e8 | ||
|
bd1abf6660 | ||
|
25b402cd29 | ||
|
c63253fb00 | ||
|
51b58ad4fa | ||
|
ce2f9d860e | ||
|
07b2c96502 | ||
|
e454a5410d | ||
|
7610848c3a | ||
|
6dfcfecca3 | ||
|
811b5a3978 | ||
|
6451cd1e10 | ||
|
8d4f212fe3 | ||
|
362282af3c | ||
|
d3da8c9bc8 | ||
|
66a21f1a48 | ||
|
95906db003 | ||
|
81e195d0ba | ||
|
effa6e0496 | ||
|
751157321e | ||
|
e37764e832 | ||
|
566dbac3d6 | ||
|
1ebfd6e497 | ||
|
630308d8e5 | ||
|
0dfc2f5fe6 | ||
|
1e49915814 | ||
|
ff4f25b501 | ||
|
d1fbbd0590 | ||
|
939f5316e0 | ||
|
d4248df09c | ||
|
c7e74d668b | ||
|
6fc519eba0 | ||
|
e2ccc32118 | ||
|
43822ccfaa | ||
|
3e18fa2e89 | ||
|
725ef3bb00 | ||
|
9382de3056 | ||
|
96971352a8 | ||
|
d5687696be | ||
|
3ca4306ac6 | ||
|
81ef690f6c | ||
|
8b0e0da8dc | ||
|
ac340c2dd9 | ||
|
ae39e19906 | ||
|
3019de74f3 | ||
|
c35a3abdbf | ||
|
b6b928669b | ||
|
9c31d62ebd | ||
|
0aaf6a318a | ||
|
d7f58cca65 | ||
|
1daca67630 | ||
|
bc375da61d | ||
|
15fd2f2266 | ||
|
be00729fbf | ||
|
b2c61c6500 | ||
|
5066dee828 | ||
|
1803e9b375 | ||
|
9bfc37b4ed | ||
|
e9d172b212 | ||
|
8a67f19184 | ||
|
f5ae110a14 | ||
|
cad96bf236 | ||
|
afdadb5cc3 | ||
|
c0fd735c46 | ||
|
297d9f78f3 | ||
|
d82ab5da44 | ||
|
9b4ca9ab82 | ||
|
8144b7193c | ||
|
3f4c0f419a | ||
|
714599ff52 | ||
|
172244e16c | ||
|
9c0c3a0966 | ||
|
1b7c90c265 | ||
|
fd48baafd5 | ||
|
6702623889 | ||
|
b3f1ebb313 |
15
Makefile
15
Makefile
@ -34,6 +34,19 @@ else
|
||||
DUMPDIR ?= ~/lfs-sysd-commands
|
||||
endif
|
||||
|
||||
ifndef ARCH
|
||||
ARCH = default
|
||||
endif
|
||||
ifneq ($(ARCH), default)
|
||||
ifneq ($(ARCH), ml_32)
|
||||
ifneq ($(ARCH), ml_x32)
|
||||
ifneq ($(ARCH), ml_all)
|
||||
$(error ARCH must be either 'default' (default if unset), 'ml_32', 'ml_x32' or 'ml_all'.)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
book: validate profile-html
|
||||
@echo "Generating chunked XHTML files at $(BASEDIR)/ ..."
|
||||
$(Q)xsltproc --nonet \
|
||||
@ -129,6 +142,7 @@ validate: tmpdir version
|
||||
--xinclude \
|
||||
--output $(RENDERTMP)/lfs-html2.xml \
|
||||
--stringparam profile.revision $(REV) \
|
||||
--stringparam profile.arch $(ARCH) \
|
||||
stylesheets/lfs-xsl/profile.xsl \
|
||||
index.xml
|
||||
|
||||
@ -182,6 +196,7 @@ $(BASEDIR)/md5sums: stylesheets/wget-list.xsl chapter03/chapter03.xml \
|
||||
|
||||
$(Q)xsltproc --nonet --xinclude \
|
||||
--stringparam profile.revision $(REV) \
|
||||
--stringparam profile.arch $(ARCH) \
|
||||
--output $(RENDERTMP)/md5sum.xml \
|
||||
stylesheets/lfs-xsl/profile.xsl \
|
||||
chapter03/chapter03.xml
|
||||
|
@ -60,7 +60,7 @@
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>The version of the book being used (in this case &version;)</para>
|
||||
<para>The version of the book being used (in this case &version;<phrase arch="ml_32,ml_x32,ml_all">-multilib</phrase>)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>The host distribution and version being used to create LFS</para>
|
||||
@ -75,7 +75,7 @@
|
||||
<para>The exact error message, or a clear description of the problem</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Note whether you have deviated from the book at all </para>
|
||||
<para>Note whether you have deviated from the book at all</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
<title>Changelog</title>
|
||||
|
||||
<para>This is version &version; of the Linux From Scratch book, dated
|
||||
<para>This is version &version;<phrase arch="ml_32,ml_x32,ml_all">&version;-multilib</phrase> of the Linux From Scratch book, dated
|
||||
&releasedate;. If this book is more than six months old, a newer and better
|
||||
version is probably already available. To find out, please check one of the
|
||||
mirrors via <ulink url="&lfs-root;mirrors.html"/>.</para>
|
||||
|
@ -262,5 +262,26 @@ EOF
|
||||
|
||||
bash version-check.sh</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
<para arch="ml_32,ml_x32,ml_all">
|
||||
Building multilib support requires the kernel of the host system
|
||||
to have 32-bit emulation support included.
|
||||
</para>
|
||||
<screen arch="ml_32,ml_x32,ml_all">Binary Emulations --->
|
||||
[*] IA32 Emulation
|
||||
<M> IA32 a.out support
|
||||
[*] x32 ABI for 64-bit mode
|
||||
</screen>
|
||||
|
||||
<para arch="ml_32,ml_x32,ml_all">The option 'IA32 a.out support' is
|
||||
optional. In case your kernel does not have 'x32 ABI for 64-bit mode'
|
||||
enabled but only 'IA32 Emulation', you can continue to build your
|
||||
system but you have to leave out any sections showing instructions
|
||||
for building x32 objects. If neither 'IA32 Emulation' nor
|
||||
'x32 ABI for 64-bit mode' is enabled, you will run in errors
|
||||
latest when building <application>glibc</application> in Chapter 6,
|
||||
so an upgrade of your host system kernel is required.
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
@ -378,6 +378,15 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry arch="ml_32,ml_x32,ml_all">
|
||||
<term>ISL (&isl-version;) - <token>&isl-size;</token>:</term>
|
||||
<listitem>
|
||||
<para>Home page: <ulink url="&isl-home;"/></para>
|
||||
<para>Download: <ulink url="&isl-url;"/></para>
|
||||
<para>MD5 sum: <literal>&isl-md5;</literal></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Jinja2 (&jinja2-version;) - <token>&jinja2-size;</token>:</term>
|
||||
<listitem>
|
||||
|
@ -84,6 +84,9 @@ useradd -s /bin/bash -g lfs -m -k /dev/null lfs</userinput></screen>
|
||||
case $(uname -m) in
|
||||
x86_64) chown -v lfs $LFS/lib64 ;;
|
||||
esac</userinput></screen>
|
||||
<screen arch="ml_32" ><userinput>chown -v lfs $LFS/lib32</userinput></screen>
|
||||
<screen arch="ml_x32" ><userinput>chown -v lfs $LFS/libx32</userinput></screen>
|
||||
<screen arch="ml_all" ><userinput>chown -v lfs $LFS/{lib32,libx32}</userinput></screen>
|
||||
|
||||
<note><para>In some host systems, the following <command>su</command> command does not complete
|
||||
properly and suspends the login for the &lfs-user; user to the background.
|
||||
|
@ -30,6 +30,13 @@ done
|
||||
case $(uname -m) in
|
||||
x86_64) mkdir -pv $LFS/lib64 ;;
|
||||
esac</userinput></screen>
|
||||
<screen arch="ml_32"><userinput>mkdir -pv $LFS/usr/lib32
|
||||
ln -sv usr/lib32 $LFS/lib32</userinput></screen>
|
||||
<screen arch="ml_x32"><userinput>mkdir -pv $LFS/usr/libx32
|
||||
ln -sv usr/libx32 $LFS/libx32</userinput></screen>
|
||||
<screen arch="ml_all"><userinput>mkdir -pv $LFS/usr/lib{,x}32
|
||||
ln -sv usr/lib32 $LFS/lib32
|
||||
ln -sv usr/libx32 $LFS/libx32</userinput></screen>
|
||||
|
||||
<para>Programs in <xref linkend="chapter-temporary-tools"/> will be compiled
|
||||
with a cross-compiler (more details can be found in section <xref
|
||||
|
@ -38,7 +38,7 @@ EOF</userinput></screen>
|
||||
<filename>.bashrc</filename> file instead. Create the
|
||||
<filename>.bashrc</filename> file now:</para>
|
||||
|
||||
<screen><userinput>cat > ~/.bashrc << "EOF"
|
||||
<screen arch="default"><userinput>cat > ~/.bashrc << "EOF"
|
||||
<literal>set +h
|
||||
umask 022
|
||||
LFS=/mnt/lfs
|
||||
@ -49,6 +49,20 @@ if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
|
||||
PATH=$LFS/tools/bin:$PATH
|
||||
CONFIG_SITE=$LFS/usr/share/config.site
|
||||
export LFS LC_ALL LFS_TGT PATH CONFIG_SITE</literal>
|
||||
EOF</userinput></screen>
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput>cat > ~/.bashrc << "EOF"
|
||||
<literal>set +h
|
||||
umask 022
|
||||
LFS=/mnt/lfs
|
||||
LC_ALL=POSIX
|
||||
LFS_TGT=x86_64-lfs-linux-gnu
|
||||
LFS_TGT32=i686-lfs-linux-gnu
|
||||
LFS_TGTX32=x86_64-lfs-linux-gnux32
|
||||
PATH=/usr/bin
|
||||
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
|
||||
PATH=$LFS/tools/bin:$PATH
|
||||
CONFIG_SITE=$LFS/usr/share/config.site
|
||||
export LFS LC_ALL LFS_TGT LFS_TGT32 LFS_TGTX32 PATH</literal>
|
||||
EOF</userinput></screen>
|
||||
|
||||
<variablelist>
|
||||
|
@ -70,12 +70,19 @@ cd build</userinput></screen>
|
||||
|
||||
<para>Now prepare Binutils for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">../configure --prefix=$LFS/tools \
|
||||
<screen arch="default"><userinput remap="configure">../configure --prefix=$LFS/tools \
|
||||
--with-sysroot=$LFS \
|
||||
--target=$LFS_TGT \
|
||||
--disable-nls \
|
||||
--enable-gprofng=no \
|
||||
--disable-werror</userinput></screen>
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=$LFS/tools \
|
||||
--with-sysroot=$LFS \
|
||||
--target=$LFS_TGT \
|
||||
--disable-nls \
|
||||
--enable-gprofng=no \
|
||||
--disable-werror \
|
||||
--enable-multilib</userinput></screen>
|
||||
|
||||
<variablelist>
|
||||
<title>The meaning of the configure options:</title>
|
||||
@ -132,6 +139,13 @@ cd build</userinput></screen>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry arch="ml_32,ml_x32,ml_all">
|
||||
<term><parameter>--enable-multilib</parameter></term>
|
||||
<listitem>
|
||||
<para>Enables multilib support.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>Continue with compiling the package:</para>
|
||||
|
@ -62,16 +62,24 @@ mv -v gmp-&gmp-version; gmp
|
||||
tar -xf ../mpc-&mpc-version;.tar.gz
|
||||
mv -v mpc-&mpc-version; mpc</userinput></screen>
|
||||
|
||||
<para>On x86_64 hosts, set the default directory name for
|
||||
<para arch="default">On x86_64 hosts, set the default directory name for
|
||||
64-bit libraries to <quote>lib</quote>:</para>
|
||||
|
||||
<screen><userinput remap="pre">case $(uname -m) in
|
||||
<screen arch="default"><userinput remap="pre">case $(uname -m) in
|
||||
x86_64)
|
||||
sed -e '/m64=/s/lib64/lib/' \
|
||||
-i.orig gcc/config/i386/t-linux64
|
||||
;;
|
||||
esac</userinput></screen>
|
||||
|
||||
<para arch="ml_32,ml_x32,ml_all">Change the default directory name for
|
||||
libraries:</para>
|
||||
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
|
||||
-e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
|
||||
-i.orig gcc/config/i386/t-linux64
|
||||
</userinput></screen>
|
||||
|
||||
<para>The GCC documentation recommends building GCC
|
||||
in a dedicated build directory:</para>
|
||||
|
||||
@ -80,7 +88,7 @@ cd build</userinput></screen>
|
||||
|
||||
<para>Prepare GCC for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">../configure \
|
||||
<screen arch="default"><userinput remap="configure">../configure \
|
||||
--target=$LFS_TGT \
|
||||
--prefix=$LFS/tools \
|
||||
--with-glibc-version=&glibc-version; \
|
||||
@ -100,6 +108,33 @@ cd build</userinput></screen>
|
||||
--disable-libvtv \
|
||||
--disable-libstdcxx \
|
||||
--enable-languages=c,c++</userinput></screen>
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure"
|
||||
arch="ml_32">mlist=m64,m32</userinput><userinput remap="configure"
|
||||
arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
|
||||
arch="ml_all">mlist=m64,m32,mx32</userinput>
|
||||
<userinput remap="configure">../configure \
|
||||
--target=$LFS_TGT \
|
||||
--prefix=$LFS/tools \
|
||||
--with-glibc-version=&glibc-version; \
|
||||
--with-sysroot=$LFS \
|
||||
--with-newlib \
|
||||
--without-headers \
|
||||
--enable-default-pie \
|
||||
--enable-default-ssp \
|
||||
--enable-initfini-array \
|
||||
--disable-nls \
|
||||
--disable-shared \
|
||||
--enable-multilib --with-multilib-list=$mlist \
|
||||
--disable-decimal-float \
|
||||
--disable-threads \
|
||||
--disable-libatomic \
|
||||
--disable-libgomp \
|
||||
--disable-libquadmath \
|
||||
--disable-libssp \
|
||||
--disable-libvtv \
|
||||
--disable-libstdcxx \
|
||||
--enable-languages=c,c++</userinput></screen>
|
||||
|
||||
<variablelist>
|
||||
<title>The meaning of the configure options:</title>
|
||||
|
||||
@ -156,13 +191,20 @@ cd build</userinput></screen>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<varlistentry arch="default">
|
||||
<term><parameter>--disable-multilib</parameter></term>
|
||||
<listitem>
|
||||
<para>On x86_64, LFS does not support a multilib configuration.
|
||||
This switch is harmless for x86.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry arch="ml_32,ml_x32,ml_all">
|
||||
<term><parameter>--enable-multilib --with-multilib-list=...</parameter></term>
|
||||
<listitem>
|
||||
<para>LFS canbe used to support multilib. Which they are is
|
||||
specified in the multilib list.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>--disable-threads,
|
||||
|
@ -47,13 +47,16 @@
|
||||
for x86_64, create a compatibility symbolic link required for proper
|
||||
operation of the dynamic library loader:</para>
|
||||
|
||||
<screen><userinput remap="pre">case $(uname -m) in
|
||||
<screen arch="default"><userinput remap="pre">case $(uname -m) in
|
||||
i?86) ln -sfv ld-linux.so.2 $LFS/lib/ld-lsb.so.3
|
||||
;;
|
||||
x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
|
||||
ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3
|
||||
;;
|
||||
esac</userinput></screen>
|
||||
<!-- no ld-linux.so.2 here as multilib is based on x86_64, not on i686 -->
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64
|
||||
ln -sfv ../lib/ld-linux-x86-64.so.2 $LFS/lib64/ld-lsb-x86-64.so.3</userinput></screen>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
@ -85,13 +88,21 @@ cd build</userinput></screen>
|
||||
|
||||
<para>Next, prepare Glibc for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">../configure \
|
||||
<screen arch="default"><userinput remap="configure">../configure \
|
||||
--prefix=/usr \
|
||||
--host=$LFS_TGT \
|
||||
--build=$(../scripts/config.guess) \
|
||||
--enable-kernel=&min-kernel; \
|
||||
--with-headers=$LFS/usr/include \
|
||||
libc_cv_slibdir=/usr/lib</userinput></screen>
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure \
|
||||
--prefix=/usr \
|
||||
--host=$LFS_TGT \
|
||||
--build=$(../scripts/config.guess) \
|
||||
--enable-kernel=&min-kernel; \
|
||||
--with-headers=$LFS/usr/include \
|
||||
--enable-multi-arch \
|
||||
libc_cv_slibdir=/usr/lib</userinput></screen>
|
||||
|
||||
<variablelist>
|
||||
<title>The meaning of the configure options:</title>
|
||||
@ -203,7 +214,7 @@ readelf -l a.out | grep ld-linux</userinput></screen>
|
||||
|
||||
<screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen>
|
||||
|
||||
<para>Note that for 32-bit machines, the interpreter name will be
|
||||
<para arch="default">Note that for 32-bit machines, the interpreter name will be
|
||||
<filename>/lib/ld-linux.so.2</filename>.</para>
|
||||
|
||||
<para>If the output is not as shown above, or there is no output at all,
|
||||
@ -231,6 +242,148 @@ readelf -l a.out | grep ld-linux</userinput></screen>
|
||||
-->
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
<sect2 arch="ml_32,ml_all">
|
||||
<title>Building Glibc - 32bit</title>
|
||||
|
||||
<para>Now recompile for m32. The extracted source can be
|
||||
reused but needs to be cleaned before installing the m32
|
||||
version of Glibc.</para>
|
||||
|
||||
<para>Clear the build directory and remove artefacts from
|
||||
previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make clean
|
||||
find .. -name "*.a" -delete</userinput></screen>
|
||||
|
||||
<para>Configure Glibc for m32 with the following commands:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="$LFS_TGT-gcc -m32" \
|
||||
CXX="$LFS_TGT-g++ -m32" \
|
||||
../configure \
|
||||
--prefix=/usr \
|
||||
--host=$LFS_TGT32 \
|
||||
--build=$(../scripts/config.guess) \
|
||||
--enable-kernel=&min-kernel; \
|
||||
--with-headers=$LFS/usr/include \
|
||||
--enable-multi-arch \
|
||||
--libdir=/usr/lib32 \
|
||||
--libexecdir=/usr/lib32 \
|
||||
libc_cv_slibdir=/usr/lib32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -a DESTDIR/usr/lib32 $LFS/usr/
|
||||
install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-32.h \
|
||||
$LFS/usr/include/gnu/
|
||||
ln -svf ../lib32/ld-linux.so.2 $LFS/lib/ld-linux.so.2</userinput></screen>
|
||||
|
||||
|
||||
<caution>
|
||||
<para>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:</para>
|
||||
|
||||
<screen><userinput>echo 'int main(){}' > dummy.c
|
||||
$LFS_TGT-gcc -m32 dummy.c
|
||||
readelf -l a.out | grep '/ld-linux'</userinput></screen>
|
||||
|
||||
<para>If everything is working correctly, there should be no errors,
|
||||
and the output of the last command will be of the form:</para>
|
||||
|
||||
<screen><computeroutput>[Requesting program interpreter: /lib/ld-linux.so.2]</computeroutput></screen>
|
||||
|
||||
<para>If the output is not shown as above or there was no output at all,
|
||||
then something is wrong. Investigate and retrace the steps to find out
|
||||
where the problem is and correct it. This issue must be resolved before
|
||||
continuing on.</para>
|
||||
|
||||
<para>Once all is well, clean up the test files:</para>
|
||||
|
||||
<screen><userinput>rm -v dummy.c a.out</userinput></screen>
|
||||
|
||||
</caution>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all">
|
||||
<title>Building Glibc - x32bit</title>
|
||||
|
||||
<para>Now recompile for mx32. The extracted source can be
|
||||
reused but needs to be cleaned before installing the mx32
|
||||
version of Glibc.</para>
|
||||
|
||||
<para>Clear the build directory and remove artefacts from
|
||||
previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make clean
|
||||
find .. -name "*.a" -delete</userinput></screen>
|
||||
|
||||
<para>Configure Glibc for mx32 with the following commands:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="$LFS_TGT-gcc -mx32" \
|
||||
CXX="$LFS_TGT-g++ -mx32" \
|
||||
../configure \
|
||||
--prefix=/usr \
|
||||
--host=$LFS_TGTX32 \
|
||||
--build=$(../scripts/config.guess) \
|
||||
--enable-kernel=&min-kernel; \
|
||||
--with-headers=$LFS/usr/include \
|
||||
--enable-multi-arch \
|
||||
--libdir=/usr/libx32 \
|
||||
--libexecdir=/usr/libx32 \
|
||||
libc_cv_slibdir=/usr/libx32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -a DESTDIR/usr/libx32 $LFS/usr/
|
||||
install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-x32.h \
|
||||
$LFS/usr/include/gnu/
|
||||
ln -svf ../libx32/ld-linux-x32.so.2 $LFS/lib/ld-linux-x32.so.2</userinput></screen>
|
||||
|
||||
<caution>
|
||||
<para>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:</para>
|
||||
|
||||
<screen><userinput>echo 'int main(){}' > dummy.c
|
||||
$LFS_TGT-gcc -mx32 dummy.c
|
||||
readelf -l a.out | grep '/ld-linux-x32'</userinput></screen>
|
||||
|
||||
<para>If everything is working correctly, there should be no errors,
|
||||
and the output of the last command will be of the form:</para>
|
||||
|
||||
<screen><computeroutput>[Requesting program interpreter: /libx32/ld-linux-x32.so.2]</computeroutput></screen>
|
||||
|
||||
<para>If the output is not shown as above or there was no output at all,
|
||||
then something is wrong. Investigate and retrace the steps to find out
|
||||
where the problem is and correct it. This issue must be resolved before
|
||||
continuing on.</para>
|
||||
|
||||
<para>Once all is well, clean up the test files:</para>
|
||||
|
||||
<screen><userinput>rm -v dummy.c a.out</userinput></screen>
|
||||
|
||||
</caution>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 role="content">
|
||||
<title/>
|
||||
|
||||
|
@ -60,7 +60,15 @@ cd build</userinput></screen>
|
||||
|
||||
<para>Prepare Libstdc++ for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">../libstdc++-v3/configure \
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../libstdc++-v3/configure \
|
||||
--host=$LFS_TGT \
|
||||
--build=$(../config.guess) \
|
||||
--prefix=/usr \
|
||||
--enable-multilib \
|
||||
--disable-nls \
|
||||
--disable-libstdcxx-pch \
|
||||
--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/&gcc-version;</userinput></screen>
|
||||
<screen arch="default"><userinput remap="configure">../libstdc++-v3/configure \
|
||||
--host=$LFS_TGT \
|
||||
--build=$(../config.guess) \
|
||||
--prefix=/usr \
|
||||
@ -81,6 +89,13 @@ cd build</userinput></screen>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry arch="ml_32,ml_x32,ml_all">
|
||||
<term><parameter>--enable-multilib</parameter></term>
|
||||
<listitem>
|
||||
<para>Enable building multilib objects.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>--disable-libstdcxx-pch</parameter></term>
|
||||
<listitem>
|
||||
|
175
chapter05/libxcrypt.xml
Normal file
175
chapter05/libxcrypt.xml
Normal file
@ -0,0 +1,175 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 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="ch-tools-libxcrypt" role="wrap">
|
||||
<?dbhtml filename="libxcrypt.html"?>
|
||||
|
||||
<sect1info condition="script">
|
||||
<productname>libxcrypt</productname>
|
||||
<productnumber>&libxcrypt-version;</productnumber>
|
||||
<address>&libxcrypt-url;</address>
|
||||
</sect1info>
|
||||
|
||||
<title>Libxcrypt-&libxcrypt-version;</title>
|
||||
|
||||
<indexterm zone="ch-tools-libxcrypt">
|
||||
<primary sortas="a-Libxcrypt">Libxcrypt</primary>
|
||||
</indexterm>
|
||||
|
||||
<sect2 role="package">
|
||||
<title/>
|
||||
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
||||
href="../chapter08/libxcrypt.xml"
|
||||
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
|
||||
|
||||
<segmentedlist>
|
||||
<segtitle>&buildtime;</segtitle>
|
||||
<segtitle>&diskspace;</segtitle>
|
||||
|
||||
<seglistitem>
|
||||
<seg>&libxcrypt-fin-sbu;</seg>
|
||||
<seg>&libxcrypt-fin-du;</seg>
|
||||
</seglistitem>
|
||||
</segmentedlist>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 role="installation">
|
||||
<title>Installation of Libxcrypt</title>
|
||||
|
||||
<para>Prepare Libxcrypt for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">./configure --target=$LFS_TGT \
|
||||
--prefix=/usr \
|
||||
--enable-hashes=strong,glibc \
|
||||
--enable-obsolete-api=no \
|
||||
--disable-static \
|
||||
--disable-failure-tokens</userinput></screen>
|
||||
|
||||
<variablelist>
|
||||
<title>The meaning of the new configure options:</title>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>--enable-hashes=strong,glibc</parameter></term>
|
||||
<listitem>
|
||||
<para>Build strong hash algorithms recommended for security use
|
||||
cases, and the hash algorithms provided by traditional Glibc
|
||||
<systemitem class='library'>libcrypt</systemitem> for
|
||||
compatibility.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>--enable-obsolete-api=no</parameter></term>
|
||||
<listitem>
|
||||
<para>Disable obsolete API functions. They are not needed for
|
||||
a modern Linux system built from source.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>--disable-failure-tokens</parameter></term>
|
||||
<listitem>
|
||||
<para>Disable failure token feature. It's needed for
|
||||
compatibility with the traditional hash libraries of some
|
||||
platforms, but a Linux system based on Glibc does not need
|
||||
it.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>To test the results, issue:</para>
|
||||
|
||||
<screen><userinput remap="test">make check</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Libxcrypt - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare File for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" \
|
||||
./configure --target=$LFS_TGT32 \
|
||||
--prefix=/usr \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--libdir=/usr/lib32 \
|
||||
--enable-hashes=strong,glibc \
|
||||
--enable-obsolete-api=glibc \
|
||||
--disable-static \
|
||||
--disable-failure-tokens</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">cp -av .libs/libcrypt.so* $LFS/usr/lib32/ &&
|
||||
make DESTDIR=$LFS install-pkgconfigDATA &&
|
||||
ln -svf libxcrypt.pc $LFS/usr/lib32/pkgconfig/libcrypt.pc</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Libxcrypt - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare File for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" \
|
||||
./configure --target=$LFS_TGT32 \
|
||||
--prefix=/usr \
|
||||
--host=x86_64-pc-linux-gnux32 \
|
||||
--libdir=/usr/libx32 \
|
||||
--enable-hashes=strong,glibc \
|
||||
--enable-obsolete-api=glibc \
|
||||
--disable-static \
|
||||
--disable-failure-tokens</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">cp -av .libs/libcrypt.so* $LFS/usr/libx32/ &&
|
||||
make DESTDIR=$LFS install-pkgconfigDATA &&
|
||||
ln -svf libxcrypt.pc $LFS/usr/libx32/pkgconfig/libcrypt.pc</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 role="content">
|
||||
<title/>
|
||||
|
||||
<para>Details on this package are located in
|
||||
<xref linkend="contents-libxcrypt" role="."/></para>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
@ -58,7 +58,7 @@ cd build</userinput></screen>
|
||||
|
||||
<para>Prepare Binutils for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">../configure \
|
||||
<screen arch="default"><userinput remap="configure">../configure \
|
||||
--prefix=/usr \
|
||||
--build=$(../config.guess) \
|
||||
--host=$LFS_TGT \
|
||||
@ -67,6 +67,16 @@ cd build</userinput></screen>
|
||||
--enable-gprofng=no \
|
||||
--disable-werror \
|
||||
--enable-64-bit-bfd</userinput></screen>
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure \
|
||||
--prefix=/usr \
|
||||
--build=$(../config.guess) \
|
||||
--host=$LFS_TGT \
|
||||
--disable-nls \
|
||||
--enable-shared \
|
||||
--enable-gprofng=no \
|
||||
--disable-werror \
|
||||
--enable-64-bit-bfd \
|
||||
--enable-multilib</userinput></screen>
|
||||
|
||||
<variablelist>
|
||||
<title>The meaning of the new configure options:</title>
|
||||
@ -88,6 +98,13 @@ cd build</userinput></screen>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry arch="ml_32,ml_x32,ml_all">
|
||||
<term><parameter>--enable-multilib</parameter></term>
|
||||
<listitem>
|
||||
<para>Enables multilib support in bintutils.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
@ -57,15 +57,23 @@ mv -v gmp-&gmp-version; gmp
|
||||
tar -xf ../mpc-&mpc-version;.tar.gz
|
||||
mv -v mpc-&mpc-version; mpc</userinput></screen>
|
||||
|
||||
<para>If building on x86_64, change the default directory name for 64-bit
|
||||
|
||||
<para arch="default">If building on x86_64, change the default directory name for 64-bit
|
||||
libraries to <quote>lib</quote>:</para>
|
||||
|
||||
<screen><userinput remap="pre">case $(uname -m) in
|
||||
<screen arch="default"><userinput remap="pre">case $(uname -m) in
|
||||
x86_64)
|
||||
sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
|
||||
;;
|
||||
esac</userinput></screen>
|
||||
|
||||
<para arch="ml_32,ml_x32,ml_all">Change the default directory name for the
|
||||
libraries:</para>
|
||||
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
|
||||
-e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
|
||||
-i.orig gcc/config/i386/t-linux64</userinput></screen>
|
||||
|
||||
<para>Override the building rule of libgcc and libstdc++ headers, to
|
||||
allow building these libraries with POSIX threads support:</para>
|
||||
|
||||
@ -82,7 +90,7 @@ cd build</userinput></screen>
|
||||
|
||||
<para>Now prepare GCC for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">../configure \
|
||||
<screen arch="default"><userinput remap="configure">../configure \
|
||||
--build=$(../config.guess) \
|
||||
--host=$LFS_TGT \
|
||||
--target=$LFS_TGT \
|
||||
@ -100,6 +108,28 @@ cd build</userinput></screen>
|
||||
--disable-libssp \
|
||||
--disable-libvtv \
|
||||
--enable-languages=c,c++</userinput></screen>
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure"
|
||||
arch="ml_32">mlist=m64,m32</userinput><userinput remap="configure"
|
||||
arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
|
||||
arch="ml_all">mlist=m64,m32,mx32</userinput>
|
||||
<userinput remap="configure">../configure \
|
||||
--build=$(../config.guess) \
|
||||
--host=$LFS_TGT \
|
||||
--target=$LFS_TGT \
|
||||
LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \
|
||||
--prefix=/usr \
|
||||
--with-build-sysroot=$LFS \
|
||||
--enable-default-pie \
|
||||
--enable-default-ssp \
|
||||
--disable-nls \
|
||||
--enable-multilib --with-multilib-list=$mlist \
|
||||
--disable-libatomic \
|
||||
--disable-libgomp \
|
||||
--disable-libquadmath \
|
||||
--disable-libsanitizer \
|
||||
--disable-libssp \
|
||||
--disable-libvtv \
|
||||
--enable-languages=c,c++</userinput></screen>
|
||||
|
||||
<variablelist>
|
||||
<title>The meaning of the new configure options:</title><!-- WIP -->
|
||||
|
@ -189,6 +189,86 @@ echo "INPUT(-lncursesw)" > $LFS/usr/lib/libncurses.so</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
<sect2 arch="ml_32,ml_all">
|
||||
<title>Building Ncurses - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Ncurses for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="$LFS_TGT-gcc -m32" \
|
||||
CXX="$LFS_TGT-g++ -m32" \
|
||||
./configure --prefix=/usr \
|
||||
--host=$LFS_TGT32 \
|
||||
--build=$(./config.guess) \
|
||||
--libdir=/usr/lib32 \
|
||||
--mandir=/usr/share/man \
|
||||
--with-shared \
|
||||
--without-normal \
|
||||
--with-cxx-shared \
|
||||
--without-debug \
|
||||
--without-ada \
|
||||
--disable-stripping \
|
||||
--enable-widec</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR TIC_PATH=$(pwd)/build/progs/tic install
|
||||
ln -s libncursesw.so DESTDIR/usr/lib32/libcursesw.so
|
||||
cp -Rv DESTDIR/usr/lib32/* $LFS/usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
<sect2 arch="ml_x32,ml_all">
|
||||
<title>Building Ncurses - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Ncurses for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="$LFS_TGT-gcc -mx32" \
|
||||
CXX="$LFS_TGT-g++ -mx32" \
|
||||
./configure --prefix=/usr \
|
||||
--host=$LFS_TGTX32 \
|
||||
--build=$(./config.guess) \
|
||||
--libdir=/usr/libx32 \
|
||||
--mandir=/usr/share/man \
|
||||
--with-shared \
|
||||
--without-normal \
|
||||
--with-cxx-shared \
|
||||
--without-debug \
|
||||
--without-ada \
|
||||
--disable-stripping \
|
||||
--enable-widec</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR TIC_PATH=$(pwd)/build/progs/tic install
|
||||
ln -s libncursesw.so DESTDIR/usr/libx32/libcursesw.so
|
||||
cp -Rv DESTDIR/usr/libx32/* $LFS/usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 role="content">
|
||||
<title/>
|
||||
|
||||
|
@ -38,4 +38,9 @@ case $(uname -m) in
|
||||
x86_64) chown -R root:root $LFS/lib64 ;;
|
||||
esac</userinput></screen>
|
||||
|
||||
<para arch="ml_32,ml_x32,ml_all">Some more directories exists for
|
||||
multilib support. Change their ownership, too:</para>
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput arch="ml_32,ml_all">chown -R root:root $LFS/lib32</userinput>
|
||||
<userinput arch="ml_x32,ml_all">chown -R root:root $LFS/libx32</userinput></screen>
|
||||
|
||||
</sect1>
|
||||
|
@ -23,7 +23,10 @@
|
||||
libltdl, and it's known that some .la files can cause BLFS package
|
||||
failures. Remove those files now:</para>
|
||||
|
||||
<screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput></screen>
|
||||
<screen><userinput>find /usr/{lib,libexec} -name \*.la -delete</userinput><userinput arch="ml_32">
|
||||
find /usr/lib32 -name \*.la -delete</userinput><userinput arch="ml_x32">
|
||||
find /usr/libx32 -name \*.la -delete</userinput><userinput arch="ml_all">
|
||||
find /usr/lib{,x}32 -name \*.la -delete</userinput></screen>
|
||||
|
||||
<para>
|
||||
The current system size is now about 3 GB, however
|
||||
|
@ -41,6 +41,9 @@ ln -sfv /run/lock /var/lock
|
||||
install -dv -m 0750 /root
|
||||
install -dv -m 1777 /tmp /var/tmp</userinput></screen>
|
||||
|
||||
<para arch="ml_32,ml_x32,ml_all">Required directories for multilib
|
||||
support has already been created while previous installation steps.</para>
|
||||
|
||||
<para>Directories are, by default, created with permission mode 755, but
|
||||
this is not desirable everywhere. In the commands above, two
|
||||
changes are made—one to the home directory of user <systemitem
|
||||
|
@ -126,6 +126,88 @@
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Util-linux - 32-bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Util-linux for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" \
|
||||
./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
|
||||
--libdir=/usr/lib32 \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--docdir=/usr/share/doc/util-linux-&util-linux-version; \
|
||||
--disable-chfn-chsh \
|
||||
--disable-login \
|
||||
--disable-nologin \
|
||||
--disable-su \
|
||||
--disable-setpriv \
|
||||
--disable-runuser \
|
||||
--disable-pylibmount \
|
||||
--disable-static \
|
||||
--without-python \
|
||||
runstatedir=/run</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Util-linux - x32-bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Util-linux for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" \
|
||||
./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
|
||||
--libdir=/usr/libx32 \
|
||||
--host=x86_64-pc-linux-gnux32 \
|
||||
--docdir=/usr/share/doc/util-linux-&util-linux-version; \
|
||||
--disable-chfn-chsh \
|
||||
--disable-login \
|
||||
--disable-nologin \
|
||||
--disable-su \
|
||||
--disable-setpriv \
|
||||
--disable-runuser \
|
||||
--disable-pylibmount \
|
||||
--disable-static \
|
||||
--without-python \
|
||||
runstatedir=/run</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 role="content">
|
||||
<title/>
|
||||
|
||||
|
@ -64,6 +64,70 @@
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Acl - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Xz for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" ./configure \
|
||||
--prefix=/usr \
|
||||
--disable-static \
|
||||
--libdir=/usr/lib32 \
|
||||
--libexecdir=/usr/lib32 \
|
||||
--host=i686-pc-linux-gnu</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Acl - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Xz for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
|
||||
--prefix=/usr \
|
||||
--disable-static \
|
||||
--libdir=/usr/libx32 \
|
||||
--libexecdir=/usr/libx32 \
|
||||
--host=x86_64-pc-linux-gnux32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-acl" role="content">
|
||||
<title>Contents of Acl</title>
|
||||
|
||||
|
@ -64,6 +64,70 @@
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Attr - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Attr for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" ./configure \
|
||||
--prefix=/usr \
|
||||
--disable-static \
|
||||
--sysconfdir=/etc \
|
||||
--libdir=/usr/lib32 \
|
||||
--host=i686-pc-linux-gnu</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Attr - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Attr for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
|
||||
--prefix=/usr \
|
||||
--disable-static \
|
||||
--sysconfdir=/etc \
|
||||
--libdir=/usr/libx32 \
|
||||
--host=x86_64-pc-linux-gnux32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-attr" role="content">
|
||||
<title>Contents of Attr</title>
|
||||
|
||||
|
@ -49,7 +49,7 @@ cd build</userinput></screen>
|
||||
|
||||
<para>Prepare Binutils for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">../configure --prefix=/usr \
|
||||
<screen arch="default"><userinput remap="configure">../configure --prefix=/usr \
|
||||
--sysconfdir=/etc \
|
||||
--enable-gold \
|
||||
--enable-ld=default \
|
||||
@ -58,6 +58,17 @@ cd build</userinput></screen>
|
||||
--disable-werror \
|
||||
--enable-64-bit-bfd \
|
||||
--with-system-zlib</userinput></screen>
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=/usr \
|
||||
--sysconfdir=/etc \
|
||||
--enable-gold \
|
||||
--enable-ld=default \
|
||||
--enable-plugins \
|
||||
--enable-shared \
|
||||
--disable-werror \
|
||||
--enable-64-bit-bfd \
|
||||
--with-system-zlib \
|
||||
--enable-multilib</userinput></screen>
|
||||
|
||||
<variablelist>
|
||||
<title>The meaning of the configure parameters:</title>
|
||||
|
||||
@ -92,6 +103,13 @@ cd build</userinput></screen>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry arch="ml_32,ml_x32,ml_all">
|
||||
<term><parameter>--enable-multilib</parameter></term>
|
||||
<listitem>
|
||||
<para>Enables multilib support in bintutils.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>--with-system-zlib</parameter></term>
|
||||
<listitem>
|
||||
|
@ -103,6 +103,60 @@ done</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Bzip2 - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make clean</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">sed -e "s/^CC=.*/CC=gcc -m32/" -i Makefile{,-libbz2_so}
|
||||
make -f Makefile-libbz2_so
|
||||
make libbz2.a</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">install -Dm755 libbz2.so.1.0.8 /usr/lib32/libbz2.so.1.0.8
|
||||
ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so
|
||||
ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so.1
|
||||
ln -sf libbz2.so.1.0.8 /usr/lib32/libbz2.so.1.0
|
||||
install -Dm644 libbz2.a /usr/lib32/libbz2.a</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Bzip2 - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make clean</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">sed -e "s/^CC=.*/CC=gcc -mx32/" -i Makefile{,-libbz2_so}
|
||||
make -f Makefile-libbz2_so
|
||||
make libbz2.a</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">install -Dm755 libbz2.so.1.0.8 /usr/libx32/libbz2.so.1.0.8
|
||||
ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so
|
||||
ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so.1
|
||||
ln -sf libbz2.so.1.0.8 /usr/libx32/libbz2.so.1.0
|
||||
install -Dm644 libbz2.a /usr/libx32/libbz2.a</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-bzip2" role="content">
|
||||
<title>Contents of Bzip2</title>
|
||||
|
||||
|
@ -33,6 +33,7 @@
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="gmp.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpfr.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="mpc.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="isl.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="attr.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="acl.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="libcap.xml"/>
|
||||
|
@ -21,7 +21,9 @@
|
||||
by libltdl, and it's known that some .la files can break BLFS package
|
||||
builds. Remove those files now:</para>
|
||||
|
||||
<screen><userinput>find /usr/lib /usr/libexec -name \*.la -delete</userinput></screen>
|
||||
<screen><userinput>find /usr/lib /usr/libexec -name \*.la -delete</userinput><userinput arch="ml_32,ml_all">
|
||||
find /usr/lib32 -name \*.la -delete</userinput><userinput arch="ml_x32,ml_all">
|
||||
find /usr/libx32 -name \*.la -delete</userinput></screen>
|
||||
|
||||
<para>For more information about libtool archive files, see the <ulink
|
||||
url="&blfs-book;introduction/la-files.html">BLFS section "About Libtool
|
||||
|
@ -65,6 +65,72 @@
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Expat - 32bit</title>
|
||||
|
||||
<para>Clean previous build but keep precompiled doc because it
|
||||
cannot be rebuilt in this stage of the system:</para>
|
||||
|
||||
<screen><userinput remap="pre">sed -e "/^am__append_1/ s/doc//" -i Makefile
|
||||
make clean</userinput></screen>
|
||||
|
||||
<para>Prepare Expat for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" ./configure \
|
||||
--prefix=/usr \
|
||||
--disable-static \
|
||||
--libdir=/usr/lib32 \
|
||||
--host=i686-pc-linux-gnu</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Expat - x32bit</title>
|
||||
|
||||
<para>Clean previous build but keep precompiled doc because it
|
||||
cannot be rebuilt in this stage of the system:</para>
|
||||
|
||||
<screen><userinput remap="pre">sed -e "/^am__append_1/ s/doc//" -i Makefile
|
||||
make clean</userinput></screen>
|
||||
|
||||
<para>Prepare Expat for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
|
||||
--prefix=/usr \
|
||||
--disable-static \
|
||||
--libdir=/usr/libx32 \
|
||||
--host=x86_64-pc-linux-gnux32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-expat" role="content">
|
||||
<title>Contents of Expat</title>
|
||||
|
||||
|
@ -59,6 +59,65 @@
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of File - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare File for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" ./configure \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/lib32 \
|
||||
--host=i686-pc-linux-gnu</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of File - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare File for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/libx32 \
|
||||
--host=x86_64-pc-linux-gnux32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-file" role="content">
|
||||
<title>Contents of File</title>
|
||||
|
@ -57,13 +57,20 @@
|
||||
<para>If building on x86_64, change the default directory name for 64-bit
|
||||
libraries to <quote>lib</quote>:</para>
|
||||
|
||||
<screen><userinput remap="pre">case $(uname -m) in
|
||||
<screen arch="default"><userinput remap="pre">case $(uname -m) in
|
||||
x86_64)
|
||||
sed -e '/m64=/s/lib64/lib/' \
|
||||
-i.orig gcc/config/i386/t-linux64
|
||||
;;
|
||||
esac</userinput></screen>
|
||||
|
||||
<para arch="ml_32,ml_x32,ml_all">Change the default directory name for 64-bit
|
||||
libraries to <quote>lib</quote>:</para>
|
||||
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="pre">sed -e '/m64=/s/lib64/lib/' \
|
||||
-e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \
|
||||
-i.orig gcc/config/i386/t-linux64</userinput></screen>
|
||||
|
||||
<para>The GCC documentation recommends building GCC in a dedicated build directory:</para>
|
||||
|
||||
<screen><userinput remap="pre">mkdir -v build
|
||||
@ -71,7 +78,7 @@ cd build</userinput></screen>
|
||||
|
||||
<para>Prepare GCC for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">../configure --prefix=/usr \
|
||||
<screen arch="default"><userinput remap="configure">../configure --prefix=/usr \
|
||||
LD=ld \
|
||||
--enable-languages=c,c++ \
|
||||
--enable-default-pie \
|
||||
@ -80,6 +87,20 @@ cd build</userinput></screen>
|
||||
--disable-bootstrap \
|
||||
--disable-fixincludes \
|
||||
--with-system-zlib</userinput></screen>
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure"
|
||||
arch="ml_32" >mlist=m64,m32</userinput><userinput remap="configure"
|
||||
arch="ml_x32">mlist=m64,mx32</userinput><userinput remap="configure"
|
||||
arch="ml_all">mlist=m64,m32,mx32</userinput>
|
||||
<userinput remap="configure">../configure --prefix=/usr \
|
||||
LD=ld \
|
||||
--enable-languages=c,c++ \
|
||||
--enable-default-pie \
|
||||
--enable-default-ssp \
|
||||
--enable-multilib \
|
||||
--with-multilib-list=$mlist \
|
||||
--disable-bootstrap \
|
||||
--disable-fixincludes \
|
||||
--with-system-zlib</userinput></screen>
|
||||
|
||||
<para>GCC supports seven different computer languages, but the
|
||||
prerequisites for most of them have not yet been installed. See the
|
||||
@ -303,10 +324,11 @@ SEARCH_DIR("/usr/local/lib")
|
||||
SEARCH_DIR("/lib")
|
||||
SEARCH_DIR("/usr/lib");</computeroutput></screen>
|
||||
|
||||
<para>A 32-bit system may use a few other directories. For example, here
|
||||
<para arch="default">A 32-bit system may use a few other directories. For example, here
|
||||
is the output from an i686 machine:</para>
|
||||
|
||||
<screen><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
|
||||
<!-- not using entities here as the dir names has nothing to do with multilib -->
|
||||
<screen arch="default"><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
|
||||
SEARCH_DIR("/usr/local/lib32")
|
||||
SEARCH_DIR("/lib32")
|
||||
SEARCH_DIR("/usr/lib32")
|
||||
|
@ -69,12 +69,19 @@ cd build</userinput></screen>
|
||||
|
||||
<para>Prepare Glibc for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">../configure --prefix=/usr \
|
||||
<screen arch="default"><userinput remap="configure">../configure --prefix=/usr \
|
||||
--disable-werror \
|
||||
--enable-kernel=&min-kernel; \
|
||||
--enable-stack-protector=strong \
|
||||
--with-headers=/usr/include \
|
||||
libc_cv_slibdir=/usr/lib</userinput></screen>
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="configure">../configure --prefix=/usr \
|
||||
--disable-werror \
|
||||
--enable-kernel=&min-kernel; \
|
||||
--enable-stack-protector=strong \
|
||||
--with-headers=/usr/include \
|
||||
--enable-multi-arch \
|
||||
libc_cv_slibdir=/usr/lib</userinput></screen>
|
||||
|
||||
<variablelist>
|
||||
<title>The meaning of the configure options:</title>
|
||||
@ -468,6 +475,156 @@ mkdir -pv /etc/ld.so.conf.d</userinput></screen>
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
<sect2 arch="ml_32,ml_all">
|
||||
<title>Building Glibc - 32bit</title>
|
||||
|
||||
<para>Now recompile for m32. The extracted source can be
|
||||
reused but needs to be cleaned before installing the m32
|
||||
version of Glibc.</para>
|
||||
|
||||
<para>Clear the build directory and remove artefacts from
|
||||
previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">rm -rf ./*
|
||||
find .. -name "*.a" -delete</userinput></screen>
|
||||
|
||||
<para>Configure Glibc for m32 with the following commands:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" \
|
||||
../configure \
|
||||
--prefix=/usr \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--build=$(../scripts/config.guess) \
|
||||
--enable-kernel=&min-kernel; \
|
||||
--with-headers=/usr/include \
|
||||
--enable-multi-arch \
|
||||
--libdir=/usr/lib32 \
|
||||
--libexecdir=/usr/lib32 \
|
||||
libc_cv_slibdir=/usr/lib32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -a DESTDIR/usr/lib32/* /usr/lib32/
|
||||
install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-32.h \
|
||||
/usr/include/gnu/</userinput></screen>
|
||||
<!-- no longer required as they are created in chap5
|
||||
ln -svf ../lib32/ld-linux.so.2 /lib/ld-linux.so.2
|
||||
-->
|
||||
|
||||
<para>Add the library name to the dynamic loader config:</para>
|
||||
|
||||
<screen role="install"><userinput>echo "/usr/lib32" >> /etc/ld.so.conf</userinput></screen>
|
||||
|
||||
<caution>
|
||||
<para>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:</para>
|
||||
|
||||
<screen><userinput>echo 'int main(){}' > dummy.c
|
||||
gcc -m32 dummy.c
|
||||
readelf -l a.out | grep '/ld-linux'</userinput></screen>
|
||||
|
||||
<para>If everything is working correctly, there should be no errors,
|
||||
and the output of the last command will be of the form:</para>
|
||||
|
||||
<screen><computeroutput>[Requesting program interpreter: /lib/ld-linux.so.2]</computeroutput></screen>
|
||||
|
||||
<para>If the output is not shown as above or there was no output at all,
|
||||
then something is wrong. Investigate and retrace the steps to find out
|
||||
where the problem is and correct it. This issue must be resolved before
|
||||
continuing on.</para>
|
||||
|
||||
<para>Once all is well, clean up the test files:</para>
|
||||
|
||||
<screen><userinput>rm -v dummy.c a.out</userinput></screen>
|
||||
|
||||
</caution>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all">
|
||||
<title>Building Glibc - x32bit</title>
|
||||
|
||||
<para>Now recompile for mx32. The extracted source can be
|
||||
reused but needs to be cleaned before installing the mx32
|
||||
version of Glibc.</para>
|
||||
|
||||
<para>Clear the build directory and remove artefacts from
|
||||
previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">rm -rf ./*
|
||||
find .. -name "*.a" -delete</userinput></screen>
|
||||
|
||||
<para>Configure Glibc for mx32 with the following commands:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" \
|
||||
../configure \
|
||||
--prefix=/usr \
|
||||
--host=x86_64-pc-linux-gnux32 \
|
||||
--build=$(../scripts/config.guess) \
|
||||
--enable-kernel=&min-kernel; \
|
||||
--with-headers=/usr/include \
|
||||
--enable-multi-arch \
|
||||
--libdir=/usr/libx32 \
|
||||
--libexecdir=/usr/libx32 \
|
||||
libc_cv_slibdir=/usr/libx32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -a DESTDIR/usr/libx32/* /usr/libx32/
|
||||
install -vm644 DESTDIR/usr/include/gnu/{lib-names,stubs}-x32.h \
|
||||
/usr/include/gnu/</userinput></screen>
|
||||
<!-- no longer required as they are created in chap5
|
||||
ln -svf ../libx32/ld-linux-x32.so.2 /lib/ld-linux-x32.so.2
|
||||
-->
|
||||
<para>Add the library name to the dynamic loader config:</para>
|
||||
|
||||
<screen role="install"><userinput>echo "/usr/libx32" >> /etc/ld.so.conf</userinput></screen>
|
||||
|
||||
<caution>
|
||||
<para>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:</para>
|
||||
|
||||
<screen><userinput>echo 'int main(){}' > dummy.c
|
||||
gcc -mx32 dummy.c
|
||||
readelf -l a.out | grep '/ld-linux-x32'</userinput></screen>
|
||||
|
||||
<para>If everything is working correctly, there should be no errors,
|
||||
and the output of the last command will be of the form:</para>
|
||||
|
||||
<screen><computeroutput>[Requesting program interpreter: /libx32/ld-linux-x32.so.2]</computeroutput></screen>
|
||||
|
||||
<para>If the output is not shown as above or there was no output at all,
|
||||
then something is wrong. Investigate and retrace the steps to find out
|
||||
where the problem is and correct it. This issue must be resolved before
|
||||
continuing on.</para>
|
||||
|
||||
<para>Once all is well, clean up the test files:</para>
|
||||
|
||||
<screen><userinput>rm -v dummy.c a.out</userinput></screen>
|
||||
|
||||
</caution>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-glibc" role="content">
|
||||
<title>Contents of Glibc</title>
|
||||
|
||||
|
@ -122,6 +122,138 @@ make install-html</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of GMP - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Generic libraries can be created by running
|
||||
the following:</para>
|
||||
|
||||
<screen role="nodump"><userinput remap="pre">cp -v configfsf.guess config.guess
|
||||
cp -v configfsf.sub config.sub</userinput></screen>
|
||||
|
||||
<para>Prepare GMP for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">ABI="32" \
|
||||
CFLAGS="-m32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=i686" \
|
||||
CXXFLAGS="$CFLAGS" \
|
||||
PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
|
||||
./configure \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--prefix=/usr \
|
||||
--disable-static \
|
||||
--enable-cxx \
|
||||
--libdir=/usr/lib32 \
|
||||
--includedir=/usr/include/m32/gmp</userinput></screen>
|
||||
|
||||
<variablelist>
|
||||
<title>The meaning of the new configure options:</title>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>--includedir=/usr/include/m32/gmp</parameter></term>
|
||||
<listitem>
|
||||
<para>Some definitions in gmp.h differs for each arch but
|
||||
has same name. Therefore, the headers must be separated from
|
||||
each other.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile
|
||||
make</userinput></screen>
|
||||
|
||||
<important>
|
||||
<para>The test suite for GMP in this section is considered critical.
|
||||
Do not skip it under any circumstances.</para>
|
||||
</important>
|
||||
|
||||
<para>Test the results:</para>
|
||||
|
||||
<screen><userinput remap="test">make check 2>&1 | tee gmp-check-log</userinput></screen>
|
||||
|
||||
<para>Ensure that all 197 tests in the test suite passed.
|
||||
Check the results by issuing the following command:</para>
|
||||
|
||||
<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
cp -Rv DESTDIR/usr/include/m32/* /usr/include/m32/
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of GMP - x32-bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Generic libraries can be created by running
|
||||
the following:</para>
|
||||
|
||||
<screen role="nodump"><userinput remap="pre">cp -v configfsf.guess config.guess
|
||||
cp -v configfsf.sub config.sub</userinput></screen>
|
||||
|
||||
<para>Prepare GMP for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">ABI="x32" \
|
||||
CFLAGS="-mx32 -O2 -pedantic -fomit-frame-pointer -mtune=generic -march=x86-64" \
|
||||
CXXFLAGS="$CFLAGS" \
|
||||
PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \
|
||||
./configure \
|
||||
--host=x86_64-pc-linux-gnux32 \
|
||||
--prefix=/usr \
|
||||
--disable-static \
|
||||
--enable-cxx \
|
||||
--libdir=/usr/libx32 \
|
||||
--includedir=/usr/include/mx32/gmp</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">sed -i 's/$(exec_prefix)\/include/$\(includedir\)/' Makefile
|
||||
make</userinput></screen>
|
||||
|
||||
<important>
|
||||
<para>The test suite for GMP in this section is considered critical.
|
||||
Do not skip it under any circumstances.</para>
|
||||
</important>
|
||||
|
||||
<para>Test the results:</para>
|
||||
|
||||
<screen><userinput remap="test">make check 2>&1 | tee gmp-check-log</userinput></screen>
|
||||
|
||||
<para>Ensure that all 197 tests in the test suite passed.
|
||||
Check the results by issuing the following command:</para>
|
||||
|
||||
<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
cp -Rv DESTDIR/usr/include/mx32/* /usr/include/mx32/
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-gmp" role="content">
|
||||
<title>Contents of GMP</title>
|
||||
|
||||
|
113
chapter08/isl.xml
Normal file
113
chapter08/isl.xml
Normal file
@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 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="ch-system-isl" role="wrap" arch="ml_32,ml_x32,ml_all">
|
||||
<?dbhtml filename="isl.html"?>
|
||||
|
||||
<sect1info condition="script">
|
||||
<productname>isl</productname>
|
||||
<productnumber>&isl-version;</productnumber>
|
||||
<address>&isl-url;</address>
|
||||
</sect1info>
|
||||
|
||||
<title>ISL-&isl-version;</title>
|
||||
|
||||
<indexterm zone="ch-system-isl">
|
||||
<primary sortas="a-ISL">ISL</primary>
|
||||
</indexterm>
|
||||
|
||||
<sect2 role="package">
|
||||
<title/>
|
||||
|
||||
<para>ISL is a thread-safe C library for manipulating sets and relations
|
||||
of integer points bounded by affine constraints.</para>
|
||||
|
||||
<segmentedlist>
|
||||
<segtitle>&buildtime;</segtitle>
|
||||
<segtitle>&diskspace;</segtitle>
|
||||
|
||||
<seglistitem>
|
||||
<seg>&isl-fin-sbu;</seg>
|
||||
<seg>&isl-fin-du;</seg>
|
||||
</seglistitem>
|
||||
</segmentedlist>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 role="installation">
|
||||
<title>Installation of ISL</title>
|
||||
|
||||
<para>Prepare ISL for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">./configure --prefix=/usr \
|
||||
--disable-static \
|
||||
--docdir=/usr/share/doc/isl-&isl-version;</userinput></screen>
|
||||
|
||||
<variablelist>
|
||||
<title>The meaning of the new configure options:</title>
|
||||
|
||||
<varlistentry>
|
||||
<term><parameter>--docdir=/usr/share/doc/isl-&isl-version;</parameter></term>
|
||||
<listitem>
|
||||
<para>This variable specifies the correct place for the
|
||||
documentation.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package and its documentation:</para>
|
||||
|
||||
<screen><userinput remap="install">make install
|
||||
install -vd /usr/share/doc/isl-&isl-version;
|
||||
install -m644 doc/{CodingStyle,manual.pdf,SubmittingPatches,user.pod} \
|
||||
/usr/share/doc/isl-&isl-version;</userinput></screen>
|
||||
|
||||
<para>Finally, move a misplaced file:</para>
|
||||
|
||||
<screen><userinput remap="install">mkdir -pv /usr/share/gdb/auto-load/usr/lib
|
||||
mv -v /usr/lib/libisl*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="contents-isl" role="content">
|
||||
<title>Contents of ISL</title>
|
||||
|
||||
<segmentedlist>
|
||||
<segtitle>Installed Libraries</segtitle>
|
||||
<segtitle>Installed directory</segtitle>
|
||||
|
||||
<seglistitem>
|
||||
<seg>libisl.so</seg>
|
||||
<seg>/usr/share/doc/isl-&isl-version;</seg>
|
||||
</seglistitem>
|
||||
</segmentedlist>
|
||||
|
||||
<variablelist>
|
||||
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
|
||||
<?dbfo list-presentation="list"?>
|
||||
<?dbhtml list-presentation="table"?>
|
||||
|
||||
<varlistentry id="libisl">
|
||||
<term><filename class="libraryfile">libisl</filename></term>
|
||||
<listitem>
|
||||
<para>Contains integer set manipulation functions</para>
|
||||
<indexterm zone="ch-system-isl libisl">
|
||||
<primary sortas="c-libisl">libisl</primary>
|
||||
</indexterm>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
@ -98,6 +98,82 @@ ln -sfv kmod /usr/bin/lsmod</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Kmod - 32bit</title>
|
||||
|
||||
<para>Clean previous build but keep man pages as they cannot
|
||||
be recreated since xsltproc isn't installed yet:</para>
|
||||
|
||||
<screen><userinput remap="pre">sed -e "s/^CLEANFILES =.*/CLEANFILES =/" -i man/Makefile
|
||||
make clean</userinput></screen>
|
||||
|
||||
<para>Prepare Kmod for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" ./configure \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/lib32 \
|
||||
--sysconfdir=/etc \
|
||||
--with-openssl \
|
||||
--with-xz \
|
||||
--with-zstd \
|
||||
--with-zlib \
|
||||
--with-rootlibdir=/usr/lib32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Kmod - x32bit</title>
|
||||
|
||||
<para>Clean previous build but keep man pages as they cannot
|
||||
be recreated since xsltproc isn't installed yet:</para>
|
||||
|
||||
<screen><userinput remap="pre">sed -e "s/^CLEANFILES =.*/CLEANFILES =/" -i man/Makefile
|
||||
make clean</userinput></screen>
|
||||
|
||||
<para>Prepare Kmod for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
|
||||
--host=x86_64-pc-linux-gnux32 \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/libx32 \
|
||||
--sysconfdir=/etc \
|
||||
--with-openssl \
|
||||
--with-xz \
|
||||
--with-zstd \
|
||||
--with-zlib \
|
||||
--with-rootlibdir=/usr/libx32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-kmod" role="content">
|
||||
<title>Contents of Kmod</title>
|
||||
|
||||
|
@ -75,6 +75,56 @@
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Libcap - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make CC="gcc -m32 -march=i686"</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make CC="gcc -m32 -march=i686" lib=lib32 prefix=$PWD/DESTDIR/usr -C libcap install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
sed -e "s|^libdir=.*|libdir=/usr/lib32|" -i /usr/lib32/pkgconfig/lib{cap,psx}.pc
|
||||
chmod -v 755 /usr/lib32/libcap.so.&libcap-version;
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Libcap - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make CC="gcc -mx32 -march=x86-64"</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make CC="gcc -mx32 -march=x86-64" lib=libx32 prefix=$PWD/DESTDIR/usr -C libcap install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
sed -e "s|^libdir=.*|libdir=/usr/libx32|" -i /usr/libx32/pkgconfig/lib{cap,psx}.pc
|
||||
chmod -v 755 /usr/libx32/libcap.so.&libcap-version;
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-libcap" role="content">
|
||||
<title>Contents of Libcap</title>
|
||||
|
||||
|
@ -66,6 +66,72 @@ rm /usr/lib/libelf.a</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Libelf - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Libtool for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" ./configure \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/lib32 \
|
||||
--disable-debuginfod \
|
||||
--enable-libdebuginfod=dummy</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR -C libelf install
|
||||
install -vDm644 config/libelf.pc DESTDIR/usr/lib32/pkgconfig/libelf.pc
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Libelf - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Libtool for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
|
||||
--host=x86_64-pc-linux-gnux32 \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/libx32 \
|
||||
--disable-debuginfod \
|
||||
--enable-libdebuginfod=dummy</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR -C libelf install
|
||||
install -vDm644 config/libelf.pc DESTDIR/usr/libx32/pkgconfig/libelf.pc
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-elfutils" role="content">
|
||||
<title>Contents of Libelf</title>
|
||||
|
||||
|
@ -96,6 +96,78 @@
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Libffi - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Libffi for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" ./configure \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/lib32 \
|
||||
--disable-static \
|
||||
--with-gcc-arch=i686</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>To test the results, issue:</para>
|
||||
|
||||
<screen><userinput remap="test">make check</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Libffi - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Libffi for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" ./configure \
|
||||
--host=x86_64-unknown-linux-gnux32 \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/libx32 \
|
||||
--disable-static \
|
||||
--with-gcc-arch=x86_64</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>To test the results, issue:</para>
|
||||
|
||||
<screen><userinput remap="test">make check</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-libffi" role="content">
|
||||
<title>Contents of Libffi</title>
|
||||
|
||||
@ -126,4 +198,3 @@
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
@ -78,6 +78,65 @@
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Libtool - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Libtool for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" ./configure \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/lib32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Libtool - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Libtool for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
|
||||
--host=x86_64-pc-linux-gnux32 \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/libx32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-libtool" role="content">
|
||||
<title>Contents of Libtool</title>
|
||||
|
@ -115,6 +115,72 @@ cp -av .libs/libcrypt.so.1* /usr/lib</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Libxcrypt - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare File for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" \
|
||||
./configure --prefix=/usr \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--libdir=/usr/lib32 \
|
||||
--enable-hashes=strong,glibc \
|
||||
--enable-obsolete-api=glibc \
|
||||
--disable-static \
|
||||
--disable-failure-tokens</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">cp -av .libs/libcrypt.so* /usr/lib32/ &&
|
||||
make install-pkgconfigDATA &&
|
||||
ln -svf libxcrypt.pc /usr/lib32/pkgconfig/libcrypt.pc</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Libxcrypt - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare File for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" \
|
||||
./configure --prefix=/usr \
|
||||
--host=x86_64-pc-linux-gnux32 \
|
||||
--libdir=/usr/libx32 \
|
||||
--enable-hashes=strong,glibc \
|
||||
--enable-obsolete-api=glibc \
|
||||
--disable-static \
|
||||
--disable-failure-tokens</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">cp -av .libs/libcrypt.so* /usr/libx32/ &&
|
||||
make install-pkgconfigDATA &&
|
||||
ln -svf libxcrypt.pc /usr/libx32/pkgconfig/libcrypt.pc</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-libxcrypt" role="content">
|
||||
<title>Contents of Libxcrypt</title>
|
||||
|
||||
|
@ -171,10 +171,11 @@ ln -sfv libncurses.so /usr/lib/libcurses.so</userinput></screen>
|
||||
following commands:</para>
|
||||
|
||||
<screen role="nodump"><userinput>make distclean
|
||||
./configure --prefix=/usr \
|
||||
--with-shared \
|
||||
--without-normal \
|
||||
--without-debug \
|
||||
./configure --prefix=/usr \
|
||||
--with-shared \
|
||||
--without-normal \
|
||||
--with-cxx-shared \
|
||||
--without-debug \
|
||||
--without-cxx-binding \
|
||||
--with-abi-version=5
|
||||
make sources libs
|
||||
@ -183,6 +184,97 @@ cp -av lib/lib*.so.5* /usr/lib</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
<sect2 arch="ml_32,ml_all">
|
||||
<title>Building Ncurses - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Ncurses for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" CXX="g++ -m32" \
|
||||
./configure --prefix=/usr \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--libdir=/usr/lib32 \
|
||||
--mandir=/usr/share/man \
|
||||
--with-shared \
|
||||
--without-debug \
|
||||
--without-normal \
|
||||
--with-cxx-shared \
|
||||
--enable-pc-files \
|
||||
--enable-widec \
|
||||
--with-pkg-config-libdir=/usr/lib32/pkgconfig</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
mkdir -p DESTDIR/usr/lib32/pkgconfig
|
||||
for lib in ncurses form panel menu ; do
|
||||
rm -vf DESTDIR/usr/lib32/lib${lib}.so
|
||||
echo "INPUT(-l${lib}w)" > DESTDIR/usr/lib32/lib${lib}.so
|
||||
ln -svf ${lib}w.pc DESTDIR/usr/lib32/pkgconfig/$lib.pc
|
||||
done
|
||||
rm -vf DESTDIR/usr/lib32/libcursesw.so
|
||||
echo "INPUT(-lncursesw)" > DESTDIR/usr/lib32/libcursesw.so
|
||||
ln -sfv libncurses.so DESTDIR/usr/lib32/libcurses.so
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
<sect2 arch="ml_x32,ml_all">
|
||||
<title>Building Ncurses - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Ncurses for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" CXX="g++ -mx32" \
|
||||
./configure --prefix=/usr \
|
||||
--host=x86_64-pc-linux-gnux32 \
|
||||
--libdir=/usr/libx32 \
|
||||
--mandir=/usr/share/man \
|
||||
--with-shared \
|
||||
--without-debug \
|
||||
--without-normal \
|
||||
--enable-pc-files \
|
||||
--enable-widec \
|
||||
--with-pkg-config-libdir=/usr/libx32/pkgconfig</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
mkdir -p DESTDIR/usr/libx32/pkgconfig
|
||||
for lib in ncurses form panel menu ; do
|
||||
rm -vf DESTDIR/usr/libx32/lib${lib}.so
|
||||
echo "INPUT(-l${lib}w)" > DESTDIR/usr/libx32/lib${lib}.so
|
||||
ln -svf ${lib}w.pc DESTDIR/usr/libx32/pkgconfig/$lib.pc
|
||||
done
|
||||
rm -vf DESTDIR/usr/libx32/libcursesw.so
|
||||
echo "INPUT(-lncursesw)" > DESTDIR/usr/libx32/libcursesw.so
|
||||
ln -sfv libncurses.so DESTDIR/usr/libx32/libcurses.so
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-ncurses" role="content">
|
||||
<title>Contents of Ncurses</title>
|
||||
|
||||
|
@ -126,6 +126,70 @@ make MANSUFFIX=ssl install</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of OpenSSL - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare OpenSSL for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">./config --prefix=/usr \
|
||||
--openssldir=/etc/ssl \
|
||||
--libdir=lib32 \
|
||||
shared \
|
||||
zlib-dynamic \
|
||||
linux-x86</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of OpenSSL - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare OpenSSL for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">./config --prefix=/usr \
|
||||
--openssldir=/etc/ssl \
|
||||
--libdir=libx32 \
|
||||
shared \
|
||||
zlib-dynamic \
|
||||
linux-x32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-openssl" role="content">
|
||||
<title>Contents of OpenSSL</title>
|
||||
|
||||
|
@ -71,7 +71,43 @@
|
||||
|
||||
<screen><userinput remap="install">ln -sv pkgconf /usr/bin/pkg-config
|
||||
ln -sv pkgconf.1 /usr/share/man/man1/pkg-config.1</userinput></screen>
|
||||
<!--
|
||||
<para arch="ml_32,ml_x32,ml_all">
|
||||
For better support of the multilib platform create some
|
||||
additional files by executing the following commands:
|
||||
</para>
|
||||
|
||||
<screen arch="ml_32,ml_x32,ml_all"><userinput remap="install">ln -sv pkgconf /usr/bin/i686-pc-linux-gnu-pkg-config
|
||||
ln -sv pkgconf /usr/bin/x86_64-pc-linux-gnux32-pkg-config
|
||||
ln -sv pkgconf /usr/bin/x86_64-pc-linux-gnu-pkg-config
|
||||
|
||||
mkdir -pv /usr/share/pkgconfig/personality.d
|
||||
|
||||
cat > /usr/share/pkgconfig/personality.d/i686-pc-linux-gnu.personality <<EOF
|
||||
Triplet: i686-pc-linux-gnu
|
||||
SysrootDir: /
|
||||
DefaultSearchPaths: /usr/lib32/pkgconfig:/usr/share/pkgconfig
|
||||
SystemIncludePaths: /usr/include
|
||||
SystemLibraryPaths: /usr/lib32
|
||||
EOF
|
||||
|
||||
cat > /usr/share/pkgconfig/personality.d/x86_64-pc-linux-gnux32.personality <<EOF
|
||||
Triplet: x86_64-pc-linux-gnux32
|
||||
SysrootDir: /
|
||||
DefaultSearchPaths: /usr/libx32/pkgconfig:/usr/share/pkgconfig
|
||||
SystemIncludePaths: /usr/include
|
||||
SystemLibraryPaths: /usr/libx32
|
||||
EOF
|
||||
|
||||
cat > /usr/share/pkgconfig/personality.d/x86_64-pc-linux-gnu.personality <<EOF
|
||||
Triplet: x86_64-pc-linux-gnu
|
||||
SysrootDir: /
|
||||
DefaultSearchPaths: /usr/lib/pkgconfig:/usr/share/pkgconfig
|
||||
SystemIncludePaths: /usr/include
|
||||
SystemLibraryPaths: /usr/lib
|
||||
EOF
|
||||
</userinput></screen>
|
||||
-->
|
||||
</sect2>
|
||||
|
||||
<sect2 id="contents-pkgconf" role="content">
|
||||
|
@ -104,6 +104,70 @@ sed -i '/{OLDSUFF}/c:' support/shlib-install</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Readline - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Readline for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" ./configure \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/lib32 \
|
||||
--disable-static \
|
||||
--with-curses</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make SHLIB_LIBS="-lncursesw"</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make SHLIB_LIBS="-lncursesw" DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Readline - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Readline for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
|
||||
--host=x86_64-pc-linux-gnux32 \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/libx32 \
|
||||
--disable-static \
|
||||
--with-curses</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make SHLIB_LIBS="-lncursesw"</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make SHLIB_LIBS="-lncursesw" DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-readline" role="content">
|
||||
<title>Contents of Readline</title>
|
||||
|
||||
|
@ -76,7 +76,6 @@
|
||||
libatomic.so.&libatomic-version;"
|
||||
|
||||
cd /usr/lib
|
||||
|
||||
for LIB in $save_usrlib; do
|
||||
objcopy --only-keep-debug $LIB $LIB.dbg
|
||||
cp $LIB /tmp/$LIB
|
||||
@ -84,7 +83,27 @@ for LIB in $save_usrlib; do
|
||||
objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
|
||||
install -vm755 /tmp/$LIB /usr/lib
|
||||
rm /tmp/$LIB
|
||||
done
|
||||
done</userinput>
|
||||
<userinput arch="ml_32,ml_all">
|
||||
cd /usr/lib32
|
||||
for LIB in $save_usrlib; do
|
||||
objcopy --only-keep-debug $LIB $LIB.dbg
|
||||
cp $LIB /tmp/$LIB
|
||||
strip --strip-unneeded /tmp/$LIB
|
||||
objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
|
||||
install -vm755 /tmp/$LIB /usr/lib32
|
||||
rm /tmp/$LIB
|
||||
done</userinput>
|
||||
<userinput arch="ml_x32,ml_all">
|
||||
cd /usr/libx32
|
||||
for LIB in $save_usrlib; do
|
||||
objcopy --only-keep-debug $LIB $LIB.dbg
|
||||
cp $LIB /tmp/$LIB
|
||||
strip --strip-unneeded /tmp/$LIB
|
||||
objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB
|
||||
install -vm755 /tmp/$LIB /usr/libx32
|
||||
rm /tmp/$LIB
|
||||
done</userinput><userinput>
|
||||
|
||||
online_usrbin="bash find strip"
|
||||
online_usrlib="libbfd-&binutils-version;.so
|
||||
@ -108,7 +127,19 @@ for LIB in $online_usrlib; do
|
||||
strip --strip-unneeded /tmp/$LIB
|
||||
install -vm755 /tmp/$LIB /usr/lib
|
||||
rm /tmp/$LIB
|
||||
done
|
||||
done</userinput><userinput arch="ml_32,ml_all">
|
||||
for LIB in $online_usrlib; do
|
||||
cp /usr/lib32/$LIB /tmp/$LIB
|
||||
strip --strip-unneeded /tmp/$LIB
|
||||
install -vm755 /tmp/$LIB /usr/lib32
|
||||
rm /tmp/$LIB
|
||||
done</userinput><userinput arch="ml_x32,ml_all">
|
||||
for LIB in $online_usrlib; do
|
||||
cp /usr/libx32/$LIB /tmp/$LIB
|
||||
strip --strip-unneeded /tmp/$LIB
|
||||
install -vm755 /tmp/$LIB /usr/libx32
|
||||
rm /tmp/$LIB
|
||||
done</userinput><userinput>
|
||||
|
||||
for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \
|
||||
$(find /usr/lib -type f -name \*.a) \
|
||||
@ -119,7 +150,25 @@ for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \
|
||||
* ) strip --strip-unneeded $i
|
||||
;;
|
||||
esac
|
||||
done
|
||||
done</userinput><userinput arch="ml_32,ml_all">
|
||||
for i in $(find /usr/lib32 -type f -name \*.so* ! -name \*dbg) \
|
||||
$(find /usr/lib32 -type f -name \*.a); do
|
||||
case "$online_usrbin $online_usrlib $save_usrlib" in
|
||||
*$(basename $i)* )
|
||||
;;
|
||||
* ) strip --strip-unneeded $i
|
||||
;;
|
||||
esac
|
||||
done</userinput><userinput arch="ml_x32,ml_all">
|
||||
for i in $(find /usr/libx32 -type f -name \*.so* ! -name \*dbg) \
|
||||
$(find /usr/libx32 -type f -name \*.a); do
|
||||
case "$online_usrbin $online_usrlib $save_usrlib" in
|
||||
*$(basename $i)* )
|
||||
;;
|
||||
* ) strip --strip-unneeded $i
|
||||
;;
|
||||
esac
|
||||
done</userinput><userinput>
|
||||
|
||||
unset BIN LIB save_usrlib online_usrbin online_usrlib
|
||||
</userinput></screen>
|
||||
|
@ -222,6 +222,129 @@ meson setup \
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of systemd - 32-bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">rm -rf *</userinput></screen>
|
||||
|
||||
<para>Create a symlink to work around missing xsltproc:</para>
|
||||
|
||||
<!-- screen><userinput remap="pre">ln -sf /tools/bin/true /usr/bin/xsltproc</userinput></screen -->
|
||||
<screen><userinput remap="pre">ln -sf /bin/true /usr/bin/xsltproc</userinput></screen>
|
||||
|
||||
<!-- with cross-LFS we have util-linux in place:
|
||||
<para>Because we have not yet installed the final version of Util-Linux,
|
||||
create links to the libraries in the approprite location:</para>
|
||||
|
||||
<screen><userinput remap="pre">for file in /tools/lib32/lib{blkid,mount,uuid}*; do
|
||||
ln -sf $file /usr/lib32/
|
||||
done</userinput></screen>
|
||||
-->
|
||||
|
||||
<para>Prepare systemd for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
|
||||
CC="gcc -m32 -march=i686" \
|
||||
CXX="g++ -m32 -march=i686" \
|
||||
LANG=en_US.UTF-8 \
|
||||
meson --prefix=/usr \
|
||||
--sysconfdir=/etc \
|
||||
--localstatedir=/var \
|
||||
--libdir=/usr/lib32 \
|
||||
-Drootlibdir=/usr/lib32 \
|
||||
-Dblkid=true \
|
||||
-Ddefault-dnssec=no \
|
||||
-Dfirstboot=false \
|
||||
-Dinstall-tests=false \
|
||||
-Dldconfig=false \
|
||||
-Dsysusers=false \
|
||||
-Db_lto=false \
|
||||
-Drpmmacrosdir=no \
|
||||
-Dhomed=false \
|
||||
-Duserdb=false \
|
||||
-Dman=false \
|
||||
-Dmode=release \
|
||||
..</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">LANG=en_US.UTF-8 ninja</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">LANG=en_US.UTF-8 DESTDIR=$PWD/DESTDIR ninja install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR
|
||||
rm -f /usr/bin/xsltproc</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of systemd - x32-bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">rm -rf *</userinput></screen>
|
||||
|
||||
<para>Create a symlink to work around missing xsltproc:</para>
|
||||
|
||||
<screen><userinput remap="pre">ln -sf /bin/true /usr/bin/xsltproc</userinput></screen>
|
||||
<!--
|
||||
<para>Fix an issue on x32:</para>
|
||||
|
||||
<screen><userinput remap="pre">sed '/log_debug/s@PRI_TIMEX@PRIi64@' -i src/timesync/timesyncd-manager.c
|
||||
sed '/long drift_freq;/s@long @int64_t @' -i src/timesync/timesyncd-manager.h</userinput></screen>
|
||||
-->
|
||||
<para>Prepare systemd for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \
|
||||
CC="gcc -mx32" \
|
||||
CXX="g++ -mx32" \
|
||||
CFLAGS+=" -Wno-error=shift-overflow" \
|
||||
CXXFLAGS+=" -Wno-error=shift-overflow" \
|
||||
LANG=en_US.UTF-8 \
|
||||
meson --prefix=/usr \
|
||||
--sysconfdir=/etc \
|
||||
--localstatedir=/var \
|
||||
--libdir=/usr/libx32 \
|
||||
-Drootlibdir=/usr/libx32 \
|
||||
-Dblkid=true \
|
||||
-Ddefault-dnssec=no \
|
||||
-Dfirstboot=false \
|
||||
-Dinstall-tests=false \
|
||||
-Dldconfig=false \
|
||||
-Dsysusers=false \
|
||||
-Db_lto=false \
|
||||
-Drpmmacrosdir=no \
|
||||
-Dhomed=false \
|
||||
-Duserdb=false \
|
||||
-Dman=false \
|
||||
-Dmode=release \
|
||||
..</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">LANG=en_US.UTF-8 ninja</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">LANG=en_US.UTF-8 DESTDIR=$PWD/DESTDIR ninja install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR
|
||||
rm -f /usr/bin/xsltproc</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-systemd" role="content">
|
||||
<title>Contents of systemd</title>
|
||||
|
||||
|
@ -160,6 +160,85 @@ rm /usr/share/man/man8/systemd-*.8</userinput></screen>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Udev - 32bit</title>
|
||||
|
||||
<para>Clean previous build (while still in the build directory):</para>
|
||||
|
||||
<screen><userinput remap="pre">rm -rf *</userinput></screen>
|
||||
|
||||
<para>Prepare File for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
|
||||
CC="gcc -m32 -march=i686" \
|
||||
CXX="g++ -m32 -march=i686" \
|
||||
LANG=en_US.UTF-8 \
|
||||
meson setup \
|
||||
--prefix=/usr \
|
||||
--buildtype=release \
|
||||
-Dmode=release \
|
||||
-Ddev-kvm-mode=0660 \
|
||||
-Dlink-udev-shared=false \
|
||||
..</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">ninja \
|
||||
$(grep -o -E "^build (src/libudev|src/udev)[^:]*" \
|
||||
build.ninja | awk '{ print $2 }') \
|
||||
$(realpath libudev.so --relative-to .)</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">mkdir -pv /usr/lib32/pkgconfig &&
|
||||
cp -av libudev.so{,*[0-9]} /usr/lib32/ &&
|
||||
sed -e "s;/usr/lib;&32;g" src/libudev/libudev.pc > /usr/lib32/pkgconfig/libudev.pc</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Udev - x32bit</title>
|
||||
<para>Clean previous build (while still in the build directory):</para>
|
||||
|
||||
<screen><userinput remap="pre">rm -rf *</userinput></screen>
|
||||
|
||||
<para>Prepare File for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">PKG_CONFIG_PATH="/usr/libx32/pkgconfig" \
|
||||
CC="gcc -mx32" \
|
||||
CXX="g++ -mx32" \
|
||||
CFLAGS+=" -Wno-error=shift-overflow" \
|
||||
CXXFLAGS+=" -Wno-error=shift-overflow" \
|
||||
LANG=en_US.UTF-8 \
|
||||
meson setup \
|
||||
--prefix=/usr \
|
||||
--buildtype=release \
|
||||
-Dmode=release \
|
||||
-Ddev-kvm-mode=0660 \
|
||||
-Dlink-udev-shared=false \
|
||||
..</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">ninja \
|
||||
$(grep -o -E "^build (src/libudev|src/udev)[^:]*" \
|
||||
build.ninja | awk '{ print $2 }') \
|
||||
$(realpath libudev.so --relative-to .)</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">mkdir -pv /usr/libx32/pkgconfig &&
|
||||
cp -av libudev.so{,*[0-9]} /usr/libx32/ &&
|
||||
sed -e "s;/usr/lib;&x32;g" src/libudev/libudev.pc > /usr/libx32/pkgconfig/libudev.pc</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="conf-udev" role="configuration">
|
||||
<title>Configuring Udev</title>
|
||||
|
||||
|
@ -125,6 +125,138 @@ su tester -c "make -k check"</userinput></screen>
|
||||
-->
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Util-linux - 32-bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Move a tool out of the way which is optionally used by
|
||||
configure but will report invalid pathes for multilib builds.</para>
|
||||
|
||||
<screen><userinput remap="configure">mv /usr/bin/ncursesw6-config{,.tmp}</userinput></screen>
|
||||
|
||||
<para>Prepare Util-linux for compilation:</para>
|
||||
|
||||
<screen revision="sysv"><userinput remap="configure">CC="gcc -m32" \
|
||||
./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--libdir=/usr/lib32 \
|
||||
--docdir=/usr/share/doc/util-linux-&util-linux-version; \
|
||||
--disable-chfn-chsh \
|
||||
--disable-login \
|
||||
--disable-nologin \
|
||||
--disable-su \
|
||||
--disable-setpriv \
|
||||
--disable-runuser \
|
||||
--disable-pylibmount \
|
||||
--disable-static \
|
||||
--without-python \
|
||||
--without-systemd \
|
||||
--without-systemdsystemunitdir</userinput></screen>
|
||||
|
||||
<screen revision="systemd"><userinput remap="configure">CC="gcc -m32" \
|
||||
./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--libdir=/usr/lib32 \
|
||||
--docdir=/usr/share/doc/util-linux-&util-linux-version; \
|
||||
--disable-chfn-chsh \
|
||||
--disable-login \
|
||||
--disable-nologin \
|
||||
--disable-su \
|
||||
--disable-setpriv \
|
||||
--disable-runuser \
|
||||
--disable-pylibmount \
|
||||
--disable-static \
|
||||
--without-python</userinput></screen>
|
||||
|
||||
<para>Restore the tool previously moved away:</para>
|
||||
|
||||
<screen><userinput remap="configure">mv /usr/bin/ncursesw6-config{.tmp,}</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Util-linux - x32-bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Move a tool out of the way which is optionally used by
|
||||
configure but will report invalid pathes for multilib builds.</para>
|
||||
|
||||
<screen><userinput remap="configure">mv /usr/bin/ncursesw6-config{,.tmp}</userinput></screen>
|
||||
|
||||
<para>Prepare Util-linux for compilation:</para>
|
||||
|
||||
<screen revision="sysv"><userinput remap="configure">CC="gcc -mx32" \
|
||||
./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
|
||||
--host=x86_64-pc-linux-gnux32 \
|
||||
--libdir=/usr/libx32 \
|
||||
--docdir=/usr/share/doc/util-linux-&util-linux-version; \
|
||||
--disable-chfn-chsh \
|
||||
--disable-login \
|
||||
--disable-nologin \
|
||||
--disable-su \
|
||||
--disable-setpriv \
|
||||
--disable-runuser \
|
||||
--disable-pylibmount \
|
||||
--disable-static \
|
||||
--without-python \
|
||||
--without-systemd \
|
||||
--without-systemdsystemunitdir</userinput></screen>
|
||||
|
||||
<screen revision="systemd"><userinput remap="configure">CC="gcc -mx32" \
|
||||
./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \
|
||||
--host=x86_64-pc-linux-gnux32 \
|
||||
--libdir=/usr/libx32 \
|
||||
--docdir=/usr/share/doc/util-linux-&util-linux-version; \
|
||||
--disable-chfn-chsh \
|
||||
--disable-login \
|
||||
--disable-nologin \
|
||||
--disable-su \
|
||||
--disable-setpriv \
|
||||
--disable-runuser \
|
||||
--disable-pylibmount \
|
||||
--disable-static \
|
||||
--without-python</userinput></screen>
|
||||
|
||||
<para>Restore the tool previously moved away:</para>
|
||||
|
||||
<screen><userinput remap="configure">mv /usr/bin/ncursesw6-config{.tmp,}</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-utillinux" role="content">
|
||||
<title>Contents of Util-linux</title>
|
||||
|
||||
|
@ -68,6 +68,68 @@
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Xz - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Xz for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -m32" ./configure \
|
||||
--host=i686-pc-linux-gnu \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/lib32 \
|
||||
--disable-static</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Xz - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Xz for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CC="gcc -mx32" ./configure \
|
||||
--host=x86_64-pc-linux-gnux32 \
|
||||
--prefix=/usr \
|
||||
--libdir=/usr/libx32 \
|
||||
--disable-static</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-xz" role="content">
|
||||
<title>Contents of Xz</title>
|
||||
|
||||
|
@ -63,6 +63,62 @@
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Zlib - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Zlib for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CFLAGS+=" -m32" CXXFLAGS+=" -m32" \
|
||||
./configure --prefix=/usr \
|
||||
--libdir=/usr/lib32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib32/* /usr/lib32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Zlib - x32bit</title>
|
||||
|
||||
<screen><userinput remap="pre">make distclean</userinput></screen>
|
||||
|
||||
<para>Prepare Zlib for compilation:</para>
|
||||
|
||||
<screen><userinput remap="configure">CFLAGS+=" -mx32" CXXFLAGS+=" -mx32" \
|
||||
./configure --prefix=/usr \
|
||||
--libdir=/usr/libx32</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">make</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/libx32/* /usr/libx32
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-zlib" role="content">
|
||||
<title>Contents of Zlib</title>
|
||||
|
||||
|
@ -65,6 +65,54 @@
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - 32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_32,ml_all" role="installation">
|
||||
<title>Installation of Zstd - 32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make clean</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">CC="gcc -m32" make prefix=/usr</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make prefix=/usr DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib/* /usr/lib32/
|
||||
sed -e "/^libdir/s/lib$/lib32/" -i /usr/lib32/pkgconfig/libzstd.pc
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- m32 -->
|
||||
|
||||
<!-- - - - - - - - - - -->
|
||||
<!-- Multilib - x32bit -->
|
||||
<!-- - - - - - - - - - -->
|
||||
|
||||
<sect2 arch="ml_x32,ml_all" role="installation">
|
||||
<title>Installation of Zstd - x32bit</title>
|
||||
|
||||
<para>Clean previous build:</para>
|
||||
|
||||
<screen><userinput remap="pre">make clean</userinput></screen>
|
||||
|
||||
<para>Compile the package:</para>
|
||||
|
||||
<screen><userinput remap="make">CC="gcc -mx32" make prefix=/usr</userinput></screen>
|
||||
|
||||
<para>Install the package:</para>
|
||||
|
||||
<screen><userinput remap="install">make prefix=/usr DESTDIR=$PWD/DESTDIR install
|
||||
cp -Rv DESTDIR/usr/lib/* /usr/libx32/
|
||||
sed -e "/^libdir/s/lib$/libx32/" -i /usr/libx32/pkgconfig/libzstd.pc
|
||||
rm -rf DESTDIR</userinput></screen>
|
||||
|
||||
</sect2><!-- mx32 -->
|
||||
|
||||
<sect2 id="contents-zstd" role="content">
|
||||
<title>Contents of Zstd</title>
|
||||
|
||||
|
@ -185,6 +185,38 @@
|
||||
UEFI bootloader from the host distro</emphasis>.</para>
|
||||
</note>
|
||||
|
||||
<note arch="ml_32,ml_x32,ml_all">
|
||||
<para>
|
||||
The kernel on a multilib system needs to be able to
|
||||
identify and start binaries compiled for different architectures
|
||||
than the default.
|
||||
</para>
|
||||
|
||||
<para arch="ml_32,ml_all">
|
||||
If support for any 32bit ABI was built, make sure that the option
|
||||
"IA32 Emulation" is selected. The option 'IA32 a.out support' is
|
||||
optional.
|
||||
</para>
|
||||
|
||||
<para arch="ml_x32,ml_all">
|
||||
If support for the x32bit ABI was built, make sure that the option
|
||||
"x32 ABI for 64-bit mode" is selected.
|
||||
</para>
|
||||
|
||||
<screen arch="ml_32">Binary Emulations --->
|
||||
[*] IA32 Emulation [CONFIG_IA32_EMULATION]
|
||||
<M> IA32 a.out support [CONFIG_IA32_AOUT]
|
||||
</screen>
|
||||
<screen arch="ml_x32">Binary Emulations --->
|
||||
[*] x32 ABI for 64-bit mode [CONFIG_X86_X32]
|
||||
</screen>
|
||||
<screen arch="ml_all">Binary Emulations --->
|
||||
[*] IA32 Emulation [CONFIG_IA32_EMULATION]
|
||||
<M> IA32 a.out support [CONFIG_IA32_AOUT]
|
||||
[*] x32 ABI for 64-bit mode [CONFIG_X86_X32]
|
||||
</screen>
|
||||
</note>
|
||||
|
||||
<variablelist>
|
||||
<title>The rationale for the above configuration items:</title>
|
||||
|
||||
|
@ -351,6 +351,15 @@
|
||||
<!ENTITY iproute2-fin-du "17 MB">
|
||||
<!ENTITY iproute2-fin-sbu "0.1 SBU">
|
||||
|
||||
<!ENTITY isl-version "0.24">
|
||||
<!ENTITY isl-size "2.1 MB">
|
||||
<!-- ENTITY isl-url "http://isl.gforge.inria.fr/isl-&isl-version;.tar.xz" -->
|
||||
<!ENTITY isl-url "https://gcc.gnu.org/pub/gcc/infrastructure/isl-&isl-version;.tar.bz2">
|
||||
<!ENTITY isl-md5 "dd2f7b78e118c25bd96134a52aae7f4d">
|
||||
<!ENTITY isl-home "http://isl.gforge.inria.fr/">
|
||||
<!ENTITY isl-fin-du "20 MB">
|
||||
<!ENTITY isl-fin-sbu "0.1 SBU">
|
||||
|
||||
<!ENTITY jinja2-version "3.1.2">
|
||||
<!ENTITY jinja2-size "262 KB">
|
||||
<!ENTITY jinja2-url "&pypi-src;/J/Jinja2/Jinja2-&jinja2-version;.tar.gz">
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
<bookinfo>
|
||||
<title>Linux From Scratch</title>
|
||||
<subtitle>Version &version;</subtitle>
|
||||
<subtitle>Version &version;<phrase arch="ml_32,ml_x32,ml_all">-multilib</phrase></subtitle>
|
||||
<subtitle>Published &releasedate;</subtitle>
|
||||
|
||||
<authorgroup>
|
||||
@ -29,6 +29,11 @@
|
||||
<firstname>Editor: DJ</firstname>
|
||||
<surname>Lucas</surname>
|
||||
</author>
|
||||
|
||||
<author arch="ml_32,ml_x32,ml_all">
|
||||
<firstname>Editor: Thomas</firstname>
|
||||
<surname>Trepl</surname>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<copyright id="copyright">
|
||||
|
128
prologue/multilib.xml
Normal file
128
prologue/multilib.xml
Normal file
@ -0,0 +1,128 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE sect1 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 arch="ml_32,ml_x32,ml_all" id="pre-multilib">
|
||||
<?dbhtml filename="multilib.html"?>
|
||||
|
||||
<title>About the Multilib Edition</title>
|
||||
|
||||
<sect2><title>What is Multilib</title>
|
||||
|
||||
<para>Today, most systems in the x86 world have a word size of 64
|
||||
bit. The word size is a number of bits which can be used at once
|
||||
in the most efficient way. Previous architectures of x86 processors
|
||||
had a word size of 32 bit which means they have a different
|
||||
understanding of what is the best alignment of data in memory as
|
||||
well as they have a different mechanism to address a different size
|
||||
of memory. Even the instruction set of the 64 bit processors is
|
||||
quite simmilar to the instructions of 32 bit processors, binaries
|
||||
(objects compiled to machine code) cannot directly be executed on
|
||||
64 bit systems.</para>
|
||||
|
||||
<para>Multilib is a mechanism to provide support for the 32 bit
|
||||
binaries so that they can be executed of modern 64 bit CPUs.</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2><title>Why doing Multilib?</title>
|
||||
|
||||
<para>From an educational point of view, LFS in its 'native' form is
|
||||
probably the best way to see how a Linux system is built from source.
|
||||
There is no need to confuse with different architectures. But when
|
||||
there is a need to run 32 binaries and you don't want to build the
|
||||
whole system in 32 bit (which would be waste of ressources
|
||||
nowadays) then LFS-multilib is an option. Examples for such a
|
||||
need could be
|
||||
<itemizedlist>
|
||||
<listitem><para>Closed-source software without source only
|
||||
available for 32 bit. That may be the case for printer driver
|
||||
or any other kind of hardware drivers, the company provides
|
||||
the binaries. If you have such a driver, LFS-multilib
|
||||
may help you getting the stuff running</para>
|
||||
</listitem>
|
||||
<listitem><para>If you want to go far beyond LFS and setup a
|
||||
virtualization platform like <application>VirtualBox</application>,
|
||||
you will need multilib support</para>
|
||||
</listitem>
|
||||
<listitem><para>or even just because you can</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</para>
|
||||
|
||||
<para>The multilib edition of LFS goes a small step beyond and a
|
||||
small step back to what has been said in the previous section
|
||||
when talking about target architectures. On one hand, the multilib
|
||||
edition is focused and <emphasis>limited</emphasis> to x86_64
|
||||
architectures only, on the other hand, it <emphasis>expands</emphasis>
|
||||
the instructions to utilize both possible architectures, namely
|
||||
32-bit as well as 64-bit.</para>
|
||||
|
||||
<para>It also goes a bit beyond the basic educational
|
||||
approach of LFS which is to show you how to build a Linux system.
|
||||
To achieve this, no support for additional architectures than
|
||||
the default one for your system is required. If you haven't
|
||||
previously built by the standard LFS book, you are encouraged to
|
||||
do so before using this edition.</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2><title>Building a Multilib System</title>
|
||||
|
||||
<para>Building a multilib system is not that much different from
|
||||
building a system by using the 'native' LFS book. Beside some
|
||||
tweaks here and there the most prominent difference is that
|
||||
multilib requires compiling some applications up to three times:
|
||||
one for the primary 64-bit architecture,
|
||||
one for the 32-bit architecture (m32),
|
||||
and once again for the 32-bit architecture with is 32-bit memory
|
||||
access and 64 bit instruction set (mx32).</para>
|
||||
|
||||
<para>Continue only if you and your system meets the following
|
||||
requirements:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>you have a x86_64 compatible machine</para>
|
||||
<note><para>
|
||||
If you have access to the kernel config for your system,
|
||||
you will need to have
|
||||
<parameter>CONFIG_IA32_EMULATION=y</parameter>
|
||||
set in order to build for <parameter>m32</parameter> and
|
||||
<parameter>CONFIG_X86_X32=y</parameter> set in order to
|
||||
build for <parameter>mx32</parameter>.
|
||||
</para>
|
||||
<para>
|
||||
If you do not have access to the kernel config for your system,
|
||||
you may be able to test for compatability by running the
|
||||
following commands:
|
||||
</para>
|
||||
<screen><userinput>echo 'int main(){}' > dummy.c
|
||||
gcc -m32 dummy.c
|
||||
./a.out
|
||||
|
||||
gcc -mx32 dummy.c
|
||||
./a.out</userinput></screen>
|
||||
<para>
|
||||
If either of the <command>./a.out</command> commands results in an
|
||||
"Exec format error" message, then you do not have a system kernel
|
||||
capable of building for that architecture within LFS, and so you
|
||||
should probably look to build an LFS system without Multilib, but
|
||||
with the required kernel capabilities, and use that to build a
|
||||
Multilib system.
|
||||
</para></note>
|
||||
</listitem>
|
||||
<listitem><para>you already have some experience with LFS</para></listitem>
|
||||
<listitem><para>you have a need for 32-bit support</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>If you passed all three requirements, go ahead and build LFS
|
||||
in multilib mode.</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
@ -15,6 +15,7 @@
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="audience.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="architecture.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="prerequisites.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="multilib.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="standards.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="why.xml"/>
|
||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="typography.xml"/>
|
||||
|
Loading…
Reference in New Issue
Block a user