---
name: "cross-gcc-gensource"
section: "1"
platform: "linux"
package: "cross-gcc-dev"
version: "248"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/cross-gcc-gensource"
---

# cross-gcc-gensource(1)

generates sources to build a Debian cross toolchain

## NAME

cross-gcc-gensource - generates sources to build a Debian cross toolchain

## SYNOPSIS

```
 [TARGET_LIST=<arches to target>] [HOST_LIST=<build arches>] [SUFFIX=.1] cross-gcc-gensource <gcc-version>
 example:
 /tmp$ TARGET_LIST="armel armhf" HOST_LIST="amd64" cross-gcc-gensource 5
 .... lots of verbose output ....
 /tmp$ cd cross-gcc-packages-amd64/cross-gcc-5-armel
 /tmp/cross-gcc-packages-amd64/cross-gcc-5-armel$ ls
 debian
 /tmp/cross-gcc-packages-amd64/cross-gcc-5-armel$ dpkg-buildpackage
 .... building cross-toolchain ....
```

## DESCRIPTION

This is a utility that prepares a directory with debianized sources which build cross toolchain packages. The sources produced by this tool are very small; the code itself comes from the `"gcc-version-source"` package and the necessary patches and extra build stuff comes from the `"cross-gcc-dev"` package.

## ARGUMENTS

Normal usage is

```
 cross-gcc-gensource gcc_version
```

Where `"gcc_version"` is the base version of the toolchain we're building. At the time of this writing we know about versions `4.9`, `5`, `6`, `7`, `8`. This commandline argument is required.

### Specifying the target architectures

This tool generates a separate source package for each target architecture (the architecture targetted by the cross-compiler being built). By default these architectures are targetted:

- arm64

  - armel

  - armhf

  - mips

  - mipsel

  - powerpc

  - ppc64el

  If a different set of target architectures is required, set the `"TARGET_LIST"` environment variable. For instance, to build for `"armel"` and `"armhf"`:

```
 TARGET_LIST="armel armhf" cross-gcc-gensource 5
```

### Specifying the host architectures

Similarly, this tool generates a separate source tree for each host architecture (the architecture the cross-compiler being built runs on). By default these architectures are targetted:

- amd64

  - i386

  If a different set of host architectures is required, set the `"HOST_LIST"` environment variable. For instance, to build just for `"amd64"`:

```
 HOST_LIST="amd64" cross-gcc-gensource 5
```

### Specifying a verison suffix

If you need to upload a new source package when the version of gcc-source built-against hasn't changed, then you need to add a version suffix to avoid binary-version clashes. An optional SUFFIX env var allows this.

```
 TARGET_LIST="armel armhf" SUFFIX=.1 cross-gcc-gensource 5
```
