root/trunk/crosscompiling-x86.txt

Revision 993, 22.0 kB (checked in by tushar, 3 years ago)

Updated Hint: crosscompiling-x86

Line 
1 AUTHOR: Ted Bullock <tbullock at Canada.com>
2
3 DATE: 2005-10-12
4
5 LICENSE: GNU General Public License
6
7 SYNOPSIS: How to build LFS for different sub-architectures.
8
9 PRIMARY URI:
10 http://www.comlore.com/i386-pc-linux-gnu
11
12 DESCRIPTION:
13 Additive instructions on how to cross-build a LFS-system for different x86 sub-architectures.
14
15 PREREQUISITES:
16 The command-replacements are applicable for LFS 6.1+SVN20051009.  Similar changes will probably work
17 fine on other versions of the book; however your mileage may vary since the resources to
18 build a Linux system are under constant revision and replacement.  You should probably have
19 either completed a run through the book already or at least read the procedures before you
20 start.
21
22 Note: There is a nicely formatted pdf and MS *.doc file available at the webpage listed above. 
23 Please forgive my horrible web design aesthetics and meaningless babble on that webpage,
24 but the hint is available there so go take a peek!
25
26 HINT:
27 1.      CROSSCOMPILING-X86
28
29 This hint is originally written by Nicholas Dille <webmaster at rakshas.de>.
30 Later it was updated and maintained by Daniel Baumann.
31 Now maintenance is done by Theodore Bullock <tbullock at Canada.com>
32
33 1.1.    INTRODUCTION
34
35 The GNU Compiler Collection (GCC) can build binaries for multiple platforms.
36
37 It is not especially complicated to cross-compile between different sub-architectures, for
38 example, to build i386 binary executables on an i686 computer.  On the other hand, to cross-
39 compile between totally different architectures, for example, building PowerPC binary
40 executables on an i386 machine, an entirely different tool-chain is required and is beyond the
41 scope of this hint.
42
43 Ideally, all packages should get their information about the target from autoconf configuration
44 parameters and compiler flags.  Unfortunately this is not the reality.  Some packages use
45 different flags and a few packages, (notably GCC and Glibc), need other trickery to fake their
46 auto-detection in place of flags.
47
48 Additionally, if you are trying to build LFS on a very old 386 then there is an extra trick to
49 completing the procedure.
50
51 This hint does not cover building LFS onto i286 or older machines as these processors lack
52 some critical functionality to handle modern memory management.  For information on that
53 topic search the internet for embedded Linux solutions.
54
55 1.2.    About $CHOST
56
57 As with $LFS, we will use the variable $CHOST to specify the type of computer we are
58 compiling on. To cross-compile you have to replace $CHOST with a value matching for your
59 target computer.
60
61 If your target machine is currently running a flavour of Linux then you can get the correct
62 value from your target computer with
63
64         # uname -m
65
66 If you have not already a running Linux system on the target machine, use the corresponding
67 value from this list instead:
68
69         Intel 386:                                      i386
70         Intel 486:                                      i486
71         Intel Pentium 1 and MMX:                        i586
72         Intel Pentium Pro, 2, 3, 4 and M:               i686
73         AMD K5, K6-1, K6-2 and K6-3:                    i586
74         AMD Athlon 1, 2, 3, 4 and 5:                    i686
75         IDT WinChip-C6, WinChip2:                       i486
76         VIA C3:                                         i486
77
78 The rest of the hint assumes you have set $CHOST as an environment variable, for example
79
80         # export CHOST="i386-pc-linux-gnu"
81
82 1.3.    About $CFLAGS and $CXXFLAGS
83
84 $CFLAGS and $CXXFLAGS are environment variable that pass user flags to GCC and G++
85 respectively.  Often, they are used to set the optimization level (-On, where n is an integer).
86 For details about optimization, please refer to the optimization hint. Here, we force GCC to
87 compile for the desired sub-architecture using -march.
88
89 Choose from this list:
90
91         Intel 386                       i386
92         Intel 486                       i486
93         Intel Pentium 1:                pentium
94         Intel Pentium MMX:              pentium-mmx
95         Intel Pentium Pro:              pentiumpro
96         Intel Pentium 2:                pentium2
97         Intel Pentium 3:                pentium3
98         Intel Pentium 4 and M:          pentium4
99
100         AMD K5:                         pentium
101         AMD K6-1:                       k6
102         AMD K6-2:                       k6-2
103         AMD K6-3:                       k6-3
104         AMD Athlon 1 (Classic):         athlon
105         AMD Athlon 2 (Thunderbird):     athlon-tbird
106         AMD Athlon 3 (XP):              athlon-xp
107         AMD Athlon 4 (Palomino):        athlon-4
108         AMD Athlon 5 (MP):              athlon-mp
109
110         IDT WinChip-C6:                 winchip-c6
111         IDT WinChip-2:                  winchip2
112         VIA C3:                         c3
113
114 The rest of the hint assumes you have set $CFLAGS and $CXXFLAGS as environment
115 variables, for example:
116
117         export CFLAGS="-march=i386"
118         export CXXFLAGS="-march=i386"
119
120 1.3.1.  ATTENTION REGARDING OPTIMIZATION
121
122 If you use optimization, in the majority of cases the binaries can only be used on the target
123 machine. This means, sharing self-generated binary-packages between different hosts is not
124 possible.
125
126 2.      LFS-Book
127
128 The following sections are ordered as a skeleton of the information in the LFS book
129 2.1.    Chapter 4: Final Preparations
130
131 2.1.1.  About $LFS
132
133 Add:
134 export CHOST="<value>"
135 export CFLAGS="<value>"
136 export CXXFLAGS="<value>"
137
138 Note:   Please replace <value> with the proper strings as was discussed earlier
139
140
141
142 2.2.    Chapter 5: Constructing a Temporary System
143
144 2.2.1.  Binutils-2.16.1
145
146 Change:
147
148 ../binutils-2.16.1/configure --prefix=/tools --disable-nls
149
150 To:
151 ../binutils-2.16.1/configure --host="$CHOST" --target="$CHOST" \
152 --prefix=/tools --disable-nls
153
154 2.2.2.  GCC-4.0.2 - Pass 1
155
156 Change:
157 ../gcc-4.0.2/configure --prefix=/tools \
158 --libexecdir=/tools/lib --with-local-prefix=/tools \
159 --disable-nls --enable-shared --enable-languages=c
160
161 To:
162 ../gcc-4.0.2/configure --host="$CHOST" --target="$CHOST" \
163 --prefix=/tools --libexecdir=/tools/lib \
164 --with-local-prefix=/tools --disable-nls \
165 --enable-shared --enable-languages=c
166
167 And then, change:
168 make bootstrap
169
170 To:
171 make BOOT_CFLAGS="$CFLAGS" bootstrap
172
173 2.2.3.  Linux-Libc-Headers-2.6.12.0
174
175 No changes - we are just copying the header files here.
176
177 2.2.4.  Glibc-2.3.5
178
179 Ok, this one is a bit trickier and what you put here can have some important ramifications
180 later.  If your target machine is a 486 or higher you should follow the (>=486) instructions
181 otherwise you should follow the (386) instructions.  The reason for this is that the basic 386
182 instruction set is missing one of the atomic instructions important to multi-threading with the
183 NPTL threading system.  Instead you will use the linuxthreads library which does not require
184 this instruction.
185
186 Change:
187
188 ../glibc-2.3.5/configure --prefix=/tools \
189 --disable-profile --enable-add-ons \
190 --enable-kernel=2.6.0 --with-binutils=/tools/bin \
191 --without-gd --with-headers=/tools/include \
192 --without-selinux
193
194 (>=486)To:
195 ../glibc-2.3.5/configure --host="$CHOST" --target="$CHOST" \
196 --prefix=/tools --disable-profile --enable-kernel=2.6.0 \
197 --with-binutils=/tools/bin --without-gd \
198 --with-headers=/tools/include --without-selinux
199
200 (386)To:
201 ../glibc-2.3.5/configure --host="$CHOST" --target="$CHOST" \
202 --prefix=/tools --disable-profile --enable-add-ons=linuxthreads \
203 --with-tls --without-__thread --enable-kernel=2.6.0 \
204 --with-binutils=/tools/bin --without-gd \
205 --with-headers=/tools/include --without-selinux
206
207 Since glibc needs to be compiled with some level of optimization we need to add an
208 optimization flag to $CFLAGS.  Please change this to suit your needs.
209
210
211 And then change:
212 make
213
214 To:
215 make CFLAGS="$CFLAGS -O2"
216
217 And then change:
218 make install
219
220 To:
221 make CFLAGS="$CFLAGS -O2" cross-compiling=no install
222
223 2.2.5.  Adjusting the tool-chain
224
225 No changes - we are using preconfigured code.
226
227 2.2.6.  Tcl-8.4.11
228
229 Change:
230 ./configure --prefix=/tools
231
232 To
233 ./configure --host="$CHOST" --target="$CHOST" --prefix=/tools
234
235 2.2.7.  Expect-5.43.0
236
237 Change:
238 ./configure --prefix=/tools --with-tcl=/tools/lib --with-x=no \
239 --with-tclinclude=$TCLPATH
240
241 To:
242 ./configure --host="$CHOST" --target="$CHOST" \
243 --prefix=/tools --with-tcl=/tools/lib --with-x=no \
244 --with-tclinclude=$TCLPATH
245
246 2.2.8.  DejaGnu-1.4.4
247
248 No need to do anything, just installing a script.
249
250 2.2.9.  GCC-4.0.2- Pass 2
251
252 Change:
253 ../gcc-4.0.2/configure --prefix=/tools \
254 --libexecdir=/tools/lib --with-local-prefix=/tools \
255 --enable-clocale=gnu --enable-shared \
256 --enable-threads=posix --enable-__cxa_atexit \
257 --enable-languages=c,c++ --disable-libstdcxx-pch
258
259 To:
260 ../gcc-4.0.2/configure --host="$CHOST" --target="$CHOST" \
261 --prefix=/tools --libexecdir=/tools/lib \
262 --with-local-prefix=/tools --enable-clocale=gnu \
263 --enable-shared --enable-threads=posix \
264 --enable-__cxa_atexit --enable-languages=c,c++ \
265 --disable-libstdcxx-pch
266
267 And then change:
268 make
269
270 To:
271 make BOOT_CFLAGS="$CFLAGS" BOOT_CXXFLAGS="$CXXFLAGS"
272
273 2.2.10. Binutils-2.16.1 - Pass 2
274
275 Change:
276 ../binutils-2.16.1/configure --prefix=/tools \
277 --enable-shared --with-lib-path=/tools/lib \
278 --disable-nls
279
280 To:
281 ../binutils-2.16.1/configure --host="$CHOST" --target="$CHOST" \
282 --prefix=/tools --enable-shared --with-lib-path=/tools/lib \
283 --disable-nls
284
285 2.2.11. Gawk-3.1.5
286
287 Change:
288 ./configure --prefix=/tools
289
290 To:
291 ./configure --host="$CHOST" --target="$CHOST" --prefix=/tools
292
293 2.2.12. Coreutils-5.2.1
294
295 Change:
296 DEFAULT_POSIX2_VERSION=199209 ./configure --prefix=/tools
297
298 To:
299 DEFAULT_POSIX2_VERSION=199209 ./configure \
300 --host="$CHOST" --target="$CHOST" --prefix=/tools
301
302 2.2.13. Bzip2-1.0.3
303
304 Add:
305 cp Makefile Makefile.backup &&
306 sed -e 's%$(BIGFILES)%$(BIGFILES) $(OPT)%' \
307 Makefile.backup > Makefile &&
308 cp Makefile-libbz2_so Makefile-libbz2_so.backup &&
309 sed -e 's%$(BIGFILES)%$(BIGFILES) $(OPT)%' \
310 Makefile-libbz2_so.backup > Makefile-libbz2_so
311
312 Change:
313 make
314
315 To:
316 make OPT="$CFLAGS" PREFIX=/tools
317
318 Change:
319 make PREFIX=/tools install
320        
321 To:
322 make OPT="$CFLAGS" PREFIX=/tools install
323
324 2.2.14. Gzip-1.3.5
325
326 Change:
327 ./configure --prefix=/tools
328
329 To:
330 ./configure --host="$CHOST" --target="$CHOST" --prefix=/tools
331
332 2.2.15. Diffutils-2.8.1
333
334 Change:
335 ./configure --prefix=/tools
336
337 To:
338 ./configure --host="$CHOST" --target="$CHOST" --prefix=/tools
339
340 2.2.16. Findutils-4.2.25
341
342 Change:
343 ./configure --prefix=/tools
344
345 To:
346 ./configure --host="$CHOST" --target="$CHOST" --prefix=/tools
347
348 2.2.17. Make-3.80
349
350 Change:
351 ./configure --prefix=/tools
352
353 To:
354 ./configure --host="$CHOST" --target="$CHOST" --prefix=/tools
355
356 2.2.18. Grep-2.5.1a
357
358 Change:
359 ./configure --prefix=/tools --disable-perl-regex
360
361 To:
362 ./configure --host="$CHOST" --target="$CHOST" --prefix=/tools \
363 --disable-perl-regexp
364
365 2.2.19. Sed-4.1.4
366
367 Change:
368 ./configure --prefix=/tools
369
370 To:
371 ./configure --host="$CHOST" --target="$CHOST" --prefix=/tools
372
373 2.2.20. Gettext-0.14.5
374
375 Change:
376 ./configure --prefix=/tools --disable-libasprintf \
377     --without-csharp
378
379 To:
380 ./configure --host="$CHOST" --target="$CHOST" --prefix=/tools \
381 --disable-libasprintf --without-csharp
382
383 2.2.21. Ncurses-5.4
384
385 Change:
386 ./configure --prefix=/tools --with-shared \
387 --without-debug --without-ada --enable-overwrite
388
389 To:
390 ./configure --host="$CHOST" --target="$CHOST" \
391 --prefix=/tools --with-shared \
392 --without-debug --without-ada --enable-overwrite
393
394 2.2.22. Patch-2.5.4
395
396 Change:
397 CPPFLAGS=-D_GNU_SOURCE ./configure --prefix=/tools
398
399 To:
400 CPPFLAGS=-D_GNU_SOURCE ./configure \
401 --host="$CHOST" --target="$CHOST" --prefix=/tools
402
403 2.2.23. Tar-1.15.1
404
405 Change:
406 ./configure --prefix=/tools
407
408 To:
409 ./configure --host="$CHOST" --target="$CHOST" --prefix=/tools
410
411 2.2.24. Texinfo-4.8
412
413 Change:
414 ./configure --prefix=/tools
415
416 To:
417 ./configure --host="$CHOST" --target="$CHOST" --prefix=/tools
418
419 2.2.25. Bash-3.0
420
421 Change:
422 ./configure --prefix=/tools --without-bash-malloc
423
424 To:
425 ./configure --host="$CHOST" --target="$CHOST" --prefix=/tools \
426 --without-bash-malloc
427
428 2.2.26. M4-1.4.3
429
430 Change:
431 ./configure --prefix=/tools
432
433 To:
434 ./configure --host="$CHOST" --target="$CHOST" --prefix=/tools
435
436 2.2.27. Util-linux-2.12r
437
438 Change:
439 ./configure
440
441 To:
442 ./configure --host="$CHOST" --target="$CHOST"
443
444 2.2.28. Perl-5.8.7
445
446 Change:
447 ./configure.gnu --prefix=/tools -Dstatic_ext='IO Fcntl POSIX'
448
449 To:
450 ./configure.gnu \
451 -Dhost="$CHOST" -Dtarget="$CHOST" -Darchname="$CHOST" \
452 --prefix=/tools -Dstatic_ext='IO Fcntl POSIX'
453
454
455 2.3.    Chapter 6: Installing Basic System Software
456
457 2.3.1.  Entering the chroot environment
458
459 After:
460 chroot "$LFS" /tools/bin/env -i \
461 HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
462 PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
463 /tools/bin/bash --login +h
464
465 Add:
466 export CHOST="i386-pc-linux-gnu" &&
467 export CFLAGS="-march=i386" &&
468 export CXXFLAGS="-march=i386"
469
470 Note:   Please replace i386 with the proper strings according to the introduction.
471
472 2.3.2.  Linux-Libc-Headers-2.6.12.0
473
474 No changes - we are just copying the header files here.
475
476 2.3.3.  Man-pages-2.08
477
478 No changes - we are just copying the man-pages here.
479
480 2.3.4.  Glibc-2.3.5
481
482 Ok, this one is a bit trickier and what you put here can have some important ramifications
483 later.  If your target machine is a 486 or higher you should follow the (>=486) instructions
484 otherwise you should follow the (386) instructions.  The reason for this is that the basic 386
485 instruction set is missing one of the atomic instructions important to multi-threading with the
486 NPTL threading system.  Instead you will use the linuxthreads library which does not require
487 this instruction.
488
489 Change:
490
491 ../glibc-2.3.5/configure --prefix=/usr \
492 --disable-profile --enable-add-ons \
493 --enable-kernel=2.6.0 --libexecdir=/usr/lib/glibc
494
495 (>=486)To:
496 ../glibc-2.3.5/configure --host="$CHOST" --target="$CHOST" \
497 --prefix=/usr --disable-profile --enable-add-ons=nptl \
498 --with-tls --with-__thread --enable-kernel=2.6.0 \
499 --libexecdir=/usr/lib/glibc
500
501 (386)To:
502 ../glibc-2.3.5/configure --host="$CHOST" --target="$CHOST" \
503 --prefix=/usr --disable-profile --enable-add-ons=linuxthreads \
504 --with-tls --without-__thread --enable-kernel=2.6.0 \
505 --libexecdir=/usr/lib/glibc
506
507 Since glibc needs to be compiled with optimization, we have to modify our $CFLAGS
508 environment variable.  Change this to suite your own needs.
509
510 And then change:
511 make
512
513 To:
514 make CFLAGS="$CFLAGS -O2"
515
516 And then change:
517 make install
518
519 To:
520 make CFLAGS="$CFLAGS -O2" cross-compiling=no install
521
522 Note:   This does not affect cross compiling for sub-architectures (it prevents Glibc to look for a
523 cross compiler and uses the native one).
524
525 2.3.5.  Re-adjusting the toolchain
526
527 No changes - we are using preconfigured code.
528
529 2.3.6.  Binutils-2.16.1
530
531 Change:
532
533 ../binutils-2.16.1/configure --prefix=/usr --enable-shared
534
535 To:
536 ../binutils-2.16.1/configure --host="$CHOST" --target="$CHOST" \
537 --prefix=/usr --enable-shared
538
539 2.3.7.  GCC-4.0.2
540
541 Change:
542 ../gcc-4.0.2/configure --prefix=/usr \
543 --libexecdir=/usr/lib --enable-shared \
544 --enable-threads=posix --enable-__cxa_atexit \
545 --enable-clocale=gnu --enable-languages=c,c++
546
547 To:
548 ../gcc-4.0.2/configure --host="$CHOST" --target="$CHOST" \
549 --prefix=/usr \
550 --libexecdir=/usr/lib --enable-shared \
551 --enable-threads=posix --enable-__cxa_atexit \
552 --enable-clocale=gnu --enable-languages=c,c++
553
554 And change:
555 make
556
557 To:
558 make BOOT_CFLAGS="$CFLAGS" BOOT_CXXFLAGS="$CXXFLAGS"
559
560 2.3.8.  Coreutils-5.2.1
561
562 Change:
563 DEFAULT_POSIX2_VERSION=199209 ./configure --prefix=/usr
564
565 To:
566 DEFAULT_POSIX2_VERSION=199209 ./configure \
567 --host="$CHOST" --target="$CHOST" --prefix=/usr
568
569 2.3.9.  Zlib-1.2.3
570
571 No need to change anything!
572 2.3.10. Mktemp-1.5
573
574 Change:
575 ./configure --prefix=/usr --with-libc
576
577 To:
578 ./configure --host="$CHOST" --target="$CHOST" \
579 --prefix=/usr --with-libc
580
581 2.3.11. Iana-Etc-2.00
582
583 No changes - we are just copying files.
584
585 2.3.12. Findutils-4.2.25
586
587 Change:
588 ./configure --prefix=/usr --libexecdir=/usr/lib/locate \
589 --localstatedir=/var/lib/locate
590
591 To:
592 ./configure --host="$CHOST" --target="$CHOST" \
593 --prefix=/usr --libexecdir=/usr/lib/locate \
594 --localstatedir=/var/lib/locate
595
596 2.3.13. Gawk-3.1.5
597
598 Change:
599 ./configure --prefix=/usr --libexecdir=/usr/lib
600
601 To:
602 ./configure --host="$CHOST" --target="$CHOST" \
603 --prefix=/usr --libexecdir=/usr/lib
604
605 2.3.14. Ncurses-5.4
606
607 Change:
608 ./configure --prefix=/usr --with-shared --without-debug
609
610 To:
611 ./configure --host="$CHOST" --target="$CHOST" \
612 --prefix=/usr --with-shared --without-debug
613
614 2.3.15. Readline-5.0
615
616 Change:
617 ./configure --prefix=/usr --libdir=/lib
618
619 To:
620 ./configure --prefix=/usr --libdir=/lib --host="$CHOST" --target="$CHOST"
621
622 2.3.16. Vim-6.3
623
624 Change:
625 ./configure --prefix=/usr --enable-multibyte
626
627
628 To:
629 ./configure --host="$CHOST" --target="$CHOST" \
630 --enable-multibyte --prefix=/usr
631
632 2.3.17. M4-1.4.3
633
634 Change:
635 ./configure --prefix=/usr
636
637 To:
638 ./configure --host="$CHOST" --target="$CHOST" --prefix=/usr
639
640 2.3.18. Bison-2.1
641
642 Change:
643 ./configure --prefix=/usr
644
645 To:
646 ./configure --host="$CHOST" --target="$CHOST" --prefix=/usr
647
648 2.3.19. Less-382
649
650 Change:
651 ./configure --prefix=/usr --bindir=/bin --sysconfdir=/etc
652
653 To:
654 ./configure --host="$CHOST" --target="$CHOST" \
655 --prefix=/usr --bindir=/bin --sysconfdir=/etc
656
657 2.3.20. Groff-1.19.2
658
659 Change:
660 PAGE=letter ./configure --prefix=/usr
661
662 To:
663 PAGE=letter ./configure --host="$CHOST" --target="$CHOST" \
664 --prefix=/usr
665
666 2.3.21. Sed-4.1.4
667
668 Change:
669 ./configure --prefix=/usr --bindir=/bin
670
671 To:
672 ./configure --host="$CHOST" --target="$CHOST" \
673 --prefix=/usr --bindir=/bin
674
675 2.3.22. Flex-2.5.31
676
677 Change:
678 ./configure --prefix=/usr
679
680 To:
681 ./configure --host="$CHOST" --target="$CHOST" --prefix=/usr
682
683 2.3.23. Gettext-0.14.5
684
685 Change:
686 ./configure --prefix=/usr
687
688 To:
689 ./configure --host="$CHOST" --target="$CHOST" --prefix=/usr
690
691 2.3.24. Inetutils-1.4.2
692        
693 Assuming CFLAGS are set, don?t change anything.
694 2.3.25. IPRoute2-051007
695
696 After:
697 ./configure
698
699 Add:
700 mv Makefile Makefile.backup &&
701 sed 's/$(CCOPTS)/$(CCOPTS) $(OPT)/' Makefile.backup > Makefile
702
703 Change:
704 make SBINDIR=/sbin
705
706 To:
707 make SBINDIR=/sbin OPT="$CFLAGS"
708
709 2.3.26. Perl-5.8.7
710
711 Change:
712 ./configure.gnu --prefix=/usr -Dpager="/bin/less -isR"
713
714 To:
715 ./configure.gnu --prefix=/usr -Dpager="/bin/less -isR" \
716 -Dhost="$CHOST" -Dtarget="$CHOST" -Darchname="$CHOST"
717
718 2.3.27. Texinfo-4.8
719
720 Change:
721 ./configure --prefix=/usr
722
723 To:
724 ./configure --host="$CHOST" --target="$CHOST" --prefix=/usr
725
726 2.3.28. Autoconf-2.59
727
728 Uses Perl and M4 to do stuff so no need to do anything!
729 2.3.29. Automake-1.9.6
730
731 Uses Perl and M4 to do stuff so no need to do anything!
732 2.3.30. Bash-3.0
733
734 Change:
735 ./configure --prefix=/usr --bindir=/bin
736
737 To:
738 ./configure --host="$CHOST" --target="$CHOST" \
739 --prefix=/usr --bindir=/bin --with-bash-malloc --with-installed-readline
740
741 2.3.31. File-4.15
742
743 Change:
744 ./configure --prefix=/usr
745
746 To:
747 ./configure --host="$CHOST" --target="$CHOST" --prefix=/usr
748
749 2.3.32. Libtool-1.5.20
750
751 Change:
752 ./configure --prefix=/usr
753
754 To:
755 ./configure --host="$CHOST" --target="$CHOST" --prefix=/usr
756
757 2.3.33. Bzip2-1.0.3
758
759 Add:
760 cp Makefile Makefile.backup
761 sed -e 's%$(BIGFILES)%$(BIGFILES) $(OPT)%' \
762 Makefile.backup > Makefile
763 cp Makefile-libbz2_so Makefile-libbz2_so.backup
764 sed -e 's%CFLAGS=-fpic%CFLAGS=$(OPT) -fpic%' \
765 Makefile-libbz2_so.backup > Makefile-libbz2_so
766
767 Change:
768 make -f Makefile-libbz2_so
769
770 To:
771 make OPT="$CFLAGS" -f Makefile-libbz2_so
772
773 Change:
774 make
775
776 To:
777 make OPT="$CFLAGS"
778
779 2.3.34. Diffutils-2.8.1
780
781 Change:
782 ./configure --prefix=/usr
783
784 To:
785 ./configure --host="$CHOST" --target="$CHOST" --prefix=/usr
786
787 2.3.35. Kbd-1.12
788
789 Change:
790 make
791
792 To:
793 make CFLAGS="$CFLAGS"
794
795 2.3.36. E2fsprogs-1.38
796
797 Change:
798 ../e2fsprogs-1.35/configure --prefix=/usr --with-root-prefix="" \
799 --enable-elf-shlibs --disable-evms
800
801 To:
802 ../e2fsprogs-1.35/configure --host="$CHOST" --target="$CHOST" \
803 --prefix=/usr --with-root-prefix="" \
804 --enable-elf-shlibs --disable-evms
805
806 2.3.37. Grep-2.5.1a
807
808 Change:
809 ./configure --prefix=/usr --bindir=/bin \
810 --with-included-regex
811
812 To:
813 ./configure --host="$CHOST" --target="$CHOST" \
814 --prefix=/usr --bindir=/bin
815 2.3.38. Grub-0.97
816
817 Change:
818 ./configure --prefix=/usr
819
820 To:
821 ./configure --host="$CHOST" --target="$CHOST" --prefix=/usr
822
823 2.3.39. Gzip-1.3.5
824
825 Change:
826 ./configure --prefix=/usr
827
828 To:
829 ./configure --host="$CHOST" --target=$CHOST --prefix=/usr
830
831 2.3.40. Man-1.6b
832
833 Add:
834 cp man2html/Makefile.in man2html/Makefile.in.backup
835 sed -e "s/CFLAGS = /CFLAGS = $CFLAGS /" \
836 man2html/Makefile.in.backup > man2html/Makefile.in
837
838 2.3.41. Make-3.80
839
840 Change:
841 ./configure --prefix=/usr
842
843 To:
844 ./configure --host="$CHOST" --target="$CHOST" --prefix=/usr
845
846 2.3.42. Module-Init-Tools-3.1
847
848 Change:
849 ./configure --prefix="" --enable-zlib
850
851 To:
852 ./configure --prefix="" --enable-zlib --host="$CHOST" --target="$CHOST"
853
854 2.3.43. Patch-2.5.4
855
856 Change:
857 CPPFLAGS=-D_GNU_SOURCE ./configure --prefix=/usr
858
859 To:
860 CPPFLAGS=-D_GNU_SOURCE ./configure \
861 --host="$CHOST" --target="$CHOST" --prefix=/usr
862
863 2.3.44. Procps-3.2.5
864
865 Change:
866 make
867
868 To:
869 make CFLAGS="$CFLAGS"
870
871 Note:   The build process will fail if your $CFLAGS does not contain the -On switch. If that is
872 the case, please use the line
873
874 make CFLAGS="$CFLAGS -O2"
875
876 instead.
877
878 2.3.45. Psmisc-21.6
879
880 Change:
881 ./configure --prefix=/usr --exec-prefix=/
882
883 To:
884 ./configure --host="$CHOST" --target="$CHOST" \
885 --prefix=/usr --exec-prefix=""
886
887 2.3.46. Shadow-4.0.12
888
889 Change:
890 ./configure --libdir=/usr/lib --enable-shared
891
892 To:
893 ./configure --host="$CHOST" --target="$CHOST" \
894 --libdir=/usr/lib --enable-shared
895
896 2.3.47. Sysklogd-1.4.1
897
898 Change:
899 make
900
901 To:
902 make RPM_OPT_FLAGS="$CFLAGS"
903
904 2.3.48. Sysvinit-2.86
905
906 Change:
907 make -C src
908
909 To:
910 make CFLAGS="-Wall -D_GNU_SOURCE $CFLAGS" -C src
911
912 2.3.49. Tar-1.15.1
913
914 Change:
915 ./configure --prefix=/usr --bindir=/bin --libexecdir=/usr/sbin
916
917 To:
918 ./configure --host="$CHOST" --target="$CHOST" \
919 --prefix=/usr --bindir=/bin --libexecdir=/usr/sbin
920
921 2.3.50. Udev-070
922
923 No changes should be necessary assuming that the CFLAGS is set appropriately as discussed
924 in Section 1.3 About $CFLAGS and $CXXFLAGS
925
926 2.3.51. Util-linux-2.12r
927
928 Change:
929 ./configure
930
931 To:
932 ./configure --host="$CHOST" --target="$CHOST"
933
934 2.4.    Chapter 7: Setting up System Bootscripts
935
936 2.4.1.  LFS-Bootscripts-3.2.1
937
938 No changes - we are just copying the scripts here.
939
940 2.5.    Chapter 8: Making the LFS system bootable
941
942 2.5.1.  Linux-2.6.13.1
943
944 Select your processor under 'Processor family' in the 'Processor type and features' menu.
945
946
947 2.6.    The End
948
949 It may be a good idea to keep the compiler flags for future use
950
951 echo "export CFLAGS=\"$(echo $CFLAGS)\"" >> /etc/profile
952 echo "export CXXFLAGS=\"$(echo $CXXFLAGS)\"" >> /etc/profile
953
954 3.      ACKNOWLEDGEMENTS:
955 *       Daniel Baumann <daniel.baumann at panthera-systems.net> for updating and
956 maintaining the hint to LFS 5.1.1
957 *       Nicholas Dille <webmaster at rakshas.de> for the original hint
958 *       Tommy Wareing for the uname hack
959 *       Christophe Devine <devine at cr0.net> for the uname kernel-module
960 *       Yann Guidon <whygee at f-cpu.org> for extending the uname kernel-module
961
962
963
964 CHANGELOG:
965
966 [2005-10-12]
967 *       Updated hint to SVN-20051009 (LFS-6.1+)
968 *       Fixed multiple typographic errors
969 [2005-09-12]
970 *       Fixed typographic mistakes
971 [2005-06-22]
972 *       Updated to LFS-6.0
973 *       Added 386 specific commands to glibc
974 *       Fixed typographic mistakes and extended some explanation
975 [2004-07-10]
976 *       Updated to LFS-5.1.1
977 *       Glibc-command revised (Thanks to Kevin White <kwhite at kevbo.org>
978 *       Typographic mistakes corrected
979 [2004-05-29]
980 *       Typographic mistakes corrected
981 [2004-05-22]
982 *       Updated to LFS 5.1.
983 *       Minor text changes.
984 [2004-01-26]
985 *       Updated to LFS 5.0.
986 *       New hint format.
987 *       Major text changes.
988 [2003-07-23]
989 *       Initial revision.
Note: See TracBrowser for help on using the browser.