Skip to content

Zero-NEET-Alfa/gcc-builder

Repository files navigation

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 20.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
    • For Ubuntu: sudo dpkg --add-architecture i386 && apt-get update -y && apt-get -y sudo apt-get -y install flex bison ncurses-dev texinfo gcc gperf patch libtool automake g++ libncurses5-dev gawk expat libexpat1-dev python-all-dev binutils-dev libgcc1:i386 bc libgnutls28-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/USBhost/build-tools-gcc
cd build-tools-gcc
./build -h

The printout will show you how to run the script.

Example commands:

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

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

# Build a Linaro 5.x toolchain for arm
./build -a arm -s linaro -v 5 -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-zyc-linux-gnu-

# for arm
export CROSS_COMPILE=$(pwd)/bin/arm-zyc-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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages