Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

PowerPC Toolchain

This page describes the tool chain and compilers needed to build Linux and other binaries for PowerPC architectures (Microwatt, A2O, A2I etc.). This page also serves as an introduction to all cross compile packages and utilities that are available to anyone developing for PPC64 architecture.

Overview

As more experienced users might already know, PowerPC compilers and utilities are available into both Big Endian and Little Endian formats. The most popular formats these days is Little Endian and PowerCommons projects use Little Endian formats.

PowerPC64 Little-Endian (LE) Cross-Compilation Toolchain

PackagePurposeInstall
gcc-powerpc64le-linux-gnuC cross-compilersudo apt install gcc-powerpc64le-linux-gnu
g++-powerpc64le-linux-gnuC++ cross-compilersudo apt install g++-powerpc64le-linux-gnu
binutils-powerpc64le-linux-gnuLinker, assembler, objdumpsudo apt install binutils-powerpc64le-linux-gnu
libc6-dev-ppc64el-crossC library headers & dev filessudo apt install libc6-dev-ppc64el-cross
linux-libc-dev-ppc64el-crossLinux kernel UAPI headerssudo apt install linux-libc-dev-ppc64el-cross
gdb-multiarchMulti-target debuggersudo apt install gdb-multiarch
qemu-user-staticUserspace emulation for ppc64lesudo apt install qemu-user-static

Install:

sudo apt install gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu binutils-powerpc64le-linux-gnu libc6-dev-ppc64el-cross linux-libc-dev-ppc64el-cross gdb-multiarch qemu-user-static

Verify:

powerpc64-linux-gnu-gcc --version

PowerPC64 Big-Endian (BE) Cross-Compilation Toolchain

PackagePurposeInstall
gcc-powerpc64-linux-gnuC cross-compilersudo apt install gcc-powerpc64-linux-gnu
g++-powerpc64-linux-gnuC++ cross-compilersudo apt install g++-powerpc64-linux-gnu
binutils-powerpc64-linux-gnuLinker, assembler, objdumpsudo apt install binutils-powerpc64-linux-gnu
libc6-dev-ppc64-crossC library headers & dev filessudo apt install libc6-dev-ppc64-cross
linux-libc-dev-ppc64-crossLinux kernel UAPI headerssudo apt install linux-libc-dev-ppc64-cross
gdb-multiarchMulti-target debuggersudo apt install gdb-multiarch
qemu-user-staticUserspace emulation for ppc64sudo apt install qemu-user-static

Install:

sudo apt install gcc-powerpc64-linux-gnu g++-powerpc64-linux-gnu binutils-powerpc64-linux-gnu libc6-dev-ppc64-cross linux-libc-dev-ppc64-cross gdb-multiarch qemu-user-static

Verify:

powerpc64-linux-gnu-gcc --version

Test Cross-Compilation

Hello World

// hello.c
#include <stdio.h>
int main() {
    printf("Hello from PowerPC!\n");
    return 0;
}

Compile:

powerpc64-linux-gnu-gcc -o hello hello.c
file hello

Expected:

hello: ELF 64-bit MSB executable, 64-bit PowerPC