Difference between revisions of "GCC"
Line 1: | Line 1: | ||
<div style="font-size: 5em; color: red;">BIG FAT WARNING!</div><br/> | <div style="font-size: 5em; color: red;">BIG FAT WARNING!</div><br/> | ||
'''You are about to over-write your currently installed ''GCC''. If you have ''ANY'' doubts that this may fail. Do not continue. Also, Do not continue with ''make install'' unless you are ''100% confident'' that your build was successful!''' | '''You are about to over-write your currently installed ''GCC''. If you have ''ANY'' doubts that this may fail. Do not continue. Also, Do not continue with ''make install'' unless you are ''100% confident'' that your build was successful!''' | ||
+ | <div style="font-size: 2em; color: red;">This page is still under development!</div><br/> | ||
{| style="text-align: left; background-color: AliceBlue;" | {| style="text-align: left; background-color: AliceBlue;" | ||
Line 6: | Line 7: | ||
!Download Source: | !Download Source: | ||
| http://ftp.gnu.org/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2 | | http://ftp.gnu.org/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2 | ||
+ | |- | ||
+ | !Download Patch: | ||
+ | | http://svn.cross-lfs.org/svn/repos/cross-lfs/trunk/patches/gcc-4.1.1-PR20425-1.patch | ||
|} | |} | ||
Line 21: | Line 25: | ||
== Multilib == | == Multilib == | ||
+ | |||
+ | The following patch fixes the searching of multilib dirs for specs file. The patch standardizes the gcc drivers path iteration functions, ensuring multilib directories are searched in the correct order. This fixes various issues, most noticably with libtool on multilib systems: | ||
+ | |||
+ | patch -Np1 -i ../gcc-4.1.1-PR20425-1.patch | ||
+ | |||
+ | Suppress the installation of libiberty.a. The version of libiberty.a provided by Binutils will be used instead: | ||
+ | |||
+ | sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in | ||
+ | |||
+ | Create the Build Directory: | ||
+ | |||
+ | mkdir -v ../gcc-build && | ||
+ | cd ../gcc-build | ||
+ | |||
+ | Configure GCC: | ||
+ | |||
+ | ../gcc-4.1.1/configure --prefix=/usr --libdir=/usr/lib64 \ | ||
+ | --libexecdir=/usr/lib64 --enable-shraed --enable-threads=posix \ | ||
+ | --enable-__cxa_atexit --enable-c99 --enable-long-long \ | ||
+ | --enable-clocale=gnu --disable-libstdcxx-pch \ | ||
+ | --enable-languages=c,c++,objc,f95,ada,java,treelang | ||
+ | |||
+ | Compile GCC: | ||
+ | |||
+ | make bootstrap | ||
+ | |||
+ | Test the Results, But do not stop at errors: | ||
+ | |||
+ | make -k check | ||
+ | |||
+ | The -k flag is used to make the test suite run through to completion and not stop at the first failure. The GCC test suite is very comprehensive and is almost guaranteed to generate a few failures. To receive a summary of the test suite results, run: | ||
+ | |||
+ | ../gcc-4.1.1/contrib/test_summary | ||
+ | |||
+ | * For only the summaries, pipe the output through grep -A7 Summ. | ||
+ | |||
+ | '''''At this time only proceed if you are 100% positive that you have built a sane compiler.''''' | ||
+ | |||
+ | Install GCC: | ||
+ | |||
+ | make install && | ||
+ | ln -v -sf ../usr/bin/cpp /lib && | ||
+ | ln -v -sf gcc /usr/bin/cc && | ||
+ | chown -v -R root:root \ | ||
+ | /usr/lib64/gcc/$(gcc -dumpmachine)/4.1.1/include && | ||
+ | chown -v -R root:root \ | ||
+ | /usr/lib64/gcc/$(gcc -dumpmachine)/4.1.1/ada{lib,include} | ||
+ | |||
+ | The '''libffi''' interface header is installed in a location where other packages will not be able to find it. If you included Java as one of the installed languages, create a symbolic link in '''/usr/include''' to remedy this: | ||
+ | |||
+ | ln -v -sf `find /usr/lib64/gcc -name ffitarget.h` /usr/include |
Revision as of 15:20, 6 November 2006
You are about to over-write your currently installed GCC. If you have ANY doubts that this may fail. Do not continue. Also, Do not continue with make install unless you are 100% confident that your build was successful!
Download Source: | http://ftp.gnu.org/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2 |
---|---|
Download Patch: | http://svn.cross-lfs.org/svn/repos/cross-lfs/trunk/patches/gcc-4.1.1-PR20425-1.patch |
Contents
Dependencies
Recommended
Optional (Required to Build the Fortran Compiler)
Non-Multilib
Multilib
The following patch fixes the searching of multilib dirs for specs file. The patch standardizes the gcc drivers path iteration functions, ensuring multilib directories are searched in the correct order. This fixes various issues, most noticably with libtool on multilib systems:
patch -Np1 -i ../gcc-4.1.1-PR20425-1.patch
Suppress the installation of libiberty.a. The version of libiberty.a provided by Binutils will be used instead:
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
Create the Build Directory:
mkdir -v ../gcc-build && cd ../gcc-build
Configure GCC:
../gcc-4.1.1/configure --prefix=/usr --libdir=/usr/lib64 \ --libexecdir=/usr/lib64 --enable-shraed --enable-threads=posix \ --enable-__cxa_atexit --enable-c99 --enable-long-long \ --enable-clocale=gnu --disable-libstdcxx-pch \ --enable-languages=c,c++,objc,f95,ada,java,treelang
Compile GCC:
make bootstrap
Test the Results, But do not stop at errors:
make -k check
The -k flag is used to make the test suite run through to completion and not stop at the first failure. The GCC test suite is very comprehensive and is almost guaranteed to generate a few failures. To receive a summary of the test suite results, run:
../gcc-4.1.1/contrib/test_summary
- For only the summaries, pipe the output through grep -A7 Summ.
At this time only proceed if you are 100% positive that you have built a sane compiler.
Install GCC:
make install && ln -v -sf ../usr/bin/cpp /lib && ln -v -sf gcc /usr/bin/cc && chown -v -R root:root \ /usr/lib64/gcc/$(gcc -dumpmachine)/4.1.1/include && chown -v -R root:root \ /usr/lib64/gcc/$(gcc -dumpmachine)/4.1.1/ada{lib,include}
The libffi interface header is installed in a location where other packages will not be able to find it. If you included Java as one of the installed languages, create a symbolic link in /usr/include to remedy this:
ln -v -sf `find /usr/lib64/gcc -name ffitarget.h` /usr/include