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
| Package | Purpose | Install |
|---|---|---|
gcc-powerpc64le-linux-gnu | C cross-compiler | sudo apt install gcc-powerpc64le-linux-gnu |
g++-powerpc64le-linux-gnu | C++ cross-compiler | sudo apt install g++-powerpc64le-linux-gnu |
binutils-powerpc64le-linux-gnu | Linker, assembler, objdump | sudo apt install binutils-powerpc64le-linux-gnu |
libc6-dev-ppc64el-cross | C library headers & dev files | sudo apt install libc6-dev-ppc64el-cross |
linux-libc-dev-ppc64el-cross | Linux kernel UAPI headers | sudo apt install linux-libc-dev-ppc64el-cross |
gdb-multiarch | Multi-target debugger | sudo apt install gdb-multiarch |
qemu-user-static | Userspace emulation for ppc64le | sudo 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
| Package | Purpose | Install |
|---|---|---|
gcc-powerpc64-linux-gnu | C cross-compiler | sudo apt install gcc-powerpc64-linux-gnu |
g++-powerpc64-linux-gnu | C++ cross-compiler | sudo apt install g++-powerpc64-linux-gnu |
binutils-powerpc64-linux-gnu | Linker, assembler, objdump | sudo apt install binutils-powerpc64-linux-gnu |
libc6-dev-ppc64-cross | C library headers & dev files | sudo apt install libc6-dev-ppc64-cross |
linux-libc-dev-ppc64-cross | Linux kernel UAPI headers | sudo apt install linux-libc-dev-ppc64-cross |
gdb-multiarch | Multi-target debugger | sudo apt install gdb-multiarch |
qemu-user-static | Userspace emulation for ppc64 | sudo 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