Create a gist now

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Build and Install GCC Suite from Scratch
#! /bin/bash
GCC_VERSION="5.2.0"
WORKDIR="$HOME/src/"
INSTALLDIR="/platform"
## NOTE: XCode must be installed (through App Store) and the following run to install command-line tools.
## THIS IS IMPORTANT! Among other things, it creates '/usr/include' and installs the system header files.
# xcode-select --install
# get the source code
cd $WORKDIR
wget http://www.netgull.com/gcc/releases/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.bz2
tar -xf gcc-${GCC_VERSION}.tar.bz2
# download the prerequisites
cd gcc-${GCC_VERSION}
./contrib/download_prerequisites
# create the build directory
cd ..
mkdir gcc-build
cd gcc-build
# build
../gcc-${GCC_VERSION}/configure \
--prefix=${INSTALLDIR} \
--enable-shared \
--enable-threads=posix \
--enable-__cxa_atexit \
--enable-clocale=gnu \
--enable-languages=all \
&& make \
&& make install
# Notes
#
# --enable-shared --enable-threads=posix --enable-__cxa_atexit:
# These parameters are required to build the C++ libraries to published standards.
#
# --enable-clocale=gnu:
# This parameter is a failsafe for incomplete locale data.
#
# --disable-multilib:
# This parameter ensures that files are created for the specific
# architecture of your computer.
# This will disable building 32-bit support on 64-bit systems where the
# 32 bit version of libc is not installed and you do not want to go
# through the trouble of building it. Diagnosis: "Compiler build fails
# with fatal error: gnu/stubs-32.h: No such file or directory"
#
# --with-system-zlib:
# Uses the system zlib instead of the bundled one. zlib is used for
# compressing and uncompressing GCC's intermediate language in LTO (Link
# Time Optimization) object files.
#
# --enable-languages=all
# --enable-languages=c,c++,fortran,go,objc,obj-c++:
# This command identifies which languages to build. You may modify this
# command to remove undesired language
@skaronn

This comment has been minimized.

Show comment
Hide comment
@skaronn

skaronn Apr 23, 2015

Hi jeetsukumaran

Does your script work on windows OS ?

Markus

skaronn commented Apr 23, 2015

Hi jeetsukumaran

Does your script work on windows OS ?

Markus

@jithinjk

This comment has been minimized.

Show comment
Hide comment
@jithinjk

jithinjk Feb 15, 2017

[root@localhost /home/admin/gcc-6.3.0]# ./contrib/download_prerequisites
./contrib/download_prerequisites: line 37: wget: command not found

[root@localhost /home/admin/wget-1.19]# ./configure
When I try to install wget, I get the following error:
configure: configuring for GNU Wget 1.19
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking whether make supports nested variables... (cached) yes
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in /home/admin/test/wget-1.19': configure: error: no acceptable C compiler found in $PATH Seeconfig.log' for more details

[root@localhost /home/admin/gcc-6.3.0]# ./contrib/download_prerequisites
./contrib/download_prerequisites: line 37: wget: command not found

[root@localhost /home/admin/wget-1.19]# ./configure
When I try to install wget, I get the following error:
configure: configuring for GNU Wget 1.19
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking whether make supports nested variables... (cached) yes
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in /home/admin/test/wget-1.19': configure: error: no acceptable C compiler found in $PATH Seeconfig.log' for more details

@bhardwajhp

This comment has been minimized.

Show comment
Hide comment
@bhardwajhp

bhardwajhp Apr 25, 2017

Thanks.

@jithinjk from the log it looks like you need to install "wget" as well as "gcc" on the machine.

Thanks.

@jithinjk from the log it looks like you need to install "wget" as well as "gcc" on the machine.

@EvilSupahFly

This comment has been minimized.

Show comment
Hide comment
@EvilSupahFly

EvilSupahFly Aug 29, 2017

Nice utility, but GCC has started using .tar.gz now for releases instead of .tar.bz2 beginning with 6.4.0 so if the version number is changed (7.2.0 for example), the script will fail if the archive is not changed as well.

Nice utility, but GCC has started using .tar.gz now for releases instead of .tar.bz2 beginning with 6.4.0 so if the version number is changed (7.2.0 for example), the script will fail if the archive is not changed as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment