eraselk / build-tools-gcc

A script to build GNU/ Linaro GCC tool-chains for arm, aarch64, x86 architectures.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GCC toolchain build script

This is a script to build GCC toolchains targeting arm, arm64, and x86 devices (primarily Android devices).

Using the script

To build a toolchain, you will need to the following:

  • A Linux distribution (the script has been tested on Ubuntu 17.04 and Arch Linux)

  • A decent processor and RAM (i5 and 8GB of RAM or more is preferred)

  • Core developer packages

    • For Arch:
    sudo pacman -S base-devel git subversion autoconf-archive
    
    • For Ubuntu:
    sudo apt-get install flex bison ncurses-dev texinfo gcc gperf patch libtool automake g++ libncurses5-dev gawk subversion expat libexpat1-dev python-all-dev binutils-dev libgcc1:i386 bc libcloog-isl-dev libcap-dev autoconf autoconf-archive libgmp-dev build-essential gcc-multilib g++-multilib pkg-config libmpc-dev libmpfr-dev autopoint gettext liblzma-dev libssl-dev libz-dev
    

Once you have set up your environment, run the following:

git clone https://github.com/theradcolor/build-tools-gcc.git
cd build-tools-gcc
bash build -h

The printout will show you how to run the script.

Example commands:

# Build a Linaro 5.x toolchain for arm
./build -a arm -s linaro -v 5 -V

# Build a Linaro 7.x toolchain for arm64
./build -a arm64 -s linaro -v 7 -V

# Build a GNU 8.x toolchain for x86_64
./build -a x86_64 -s gnu -v 8 -V

After compilation

Once it is done building, you will have a folder with the compiled toolchain as well as either a tar.xz or tar.gz file (depending on if you passed -p or not).

If the toolchains are compressed, move them into your directory of choice and run the following commands:

For xz compression:

tar -xvf <toolchain_name>.tar.xz --strip-components=1

For gz compression:

tar -xvzf <toolchain_name>.tar.gz --strip-components=1

After that, point your cross compiler to the proper file and compile! This is an easy shortcut for kernels (when run in the directory you extracted the toolchain in):

# for arm64
export CROSS_COMPILE=$(pwd)/bin/aarch64-linux-gnu-

# for arm
export CROSS_COMPILE=$(pwd)/bin/arm-linux-gnueabi-

Pull requests/issues

If you have any issues with this script, feel free to open an issue!

Pull requests are more than welcome as well. However, there is a particular coding style that should be followed:

  • All variables are uppercased and use curly braces: ${VARIABLE} instead of $variable
  • Four spaces for indents
  • Double brackets and single equal sign for string comparisons in if blocks: if [[ ${VARIABLE} = "yes" ]]; then

Additionally, please be sure to run your change through shellcheck.net (either copy and paste the script there or download the binary and run shellcheck build).

Credits/thanks

  • nathanchance: For great modifications!
  • frap129: For some modifications to update the script/components
  • msfjarvis: For testing the arm option

About

A script to build GNU/ Linaro GCC tool-chains for arm, aarch64, x86 architectures.

License:GNU General Public License v3.0


Languages

Language:Shell 100.0%