Difference between revisions of "Create Debian sysroots"

From Aram's Wiki
Jump to: navigation, search
(Prerequisites)
Line 6: Line 6:
 
We'll create Debian sysroots suitable for a [[Linux/amd64 GCC 8.3.0 cross-compiler instructions | GCC cross compiler]].
 
We'll create Debian sysroots suitable for a [[Linux/amd64 GCC 8.3.0 cross-compiler instructions | GCC cross compiler]].
  
== Prerequisites ==
+
== Debootstrap machine ==
 
 
[[Debian Linux Post Install Steps| Debian]] or [[Ubuntu Linux Post Install Steps | Ubuntu]] or any system that can run [https://wiki.debian.org/Debootstrap debootstrap].
 
  
 
Everything below runs on the '''debootstrap machine''' as root:
 
Everything below runs on the '''debootstrap machine''' as root:
  
 
  sudo -i
 
  sudo -i
 +
 +
=== Prerequisites ===
 +
 +
[[Debian Linux Post Install Steps| Debian]] or [[Ubuntu Linux Post Install Steps | Ubuntu]] or any system that can run [https://wiki.debian.org/Debootstrap debootstrap].
  
 
=== Install debootstrap ===
 
=== Install debootstrap ===

Revision as of 14:09, 24 November 2019


Introduction

We'll create Debian sysroots suitable for a GCC cross compiler.

Debootstrap machine

Everything below runs on the debootstrap machine as root:

sudo -i

Prerequisites

Debian or Ubuntu or any system that can run debootstrap.

Install debootstrap

apt install -y debootstrap

Run debootstrap

mkdir -p /tmp/sysroots
cd /tmp/sysroots
arches="amd64,x86_64-linux-gnu arm64,aarch64-linux-gnu mips,mips-linux-gnu mips64el,mips64el-linux-gnuabi64 ppc64el,powerpc64le-linux-gnu"
for arch in $arches; do IFS=","; set $arch; debootstrap --arch $1 --variant=buildd stable $2 http://deb.debian.org/debian; unset IFS; done

Fix symlinks

Debootstrap will create absolute symlinks, fix absolute symlinks to refer to the sysroot dir by changing them into relative symlinks.

for arch in $arches; do IFS=","; set $arch; find "$2" -type l -lname '/*' -exec sh -c 'file="$0"; dir=$(dirname "$file"); target=$(readlink "$0"); prefix=$(dirname "$dir" | sed 's@[^/]*@\.\.@g'); newtarget="$prefix$target"; ln -snf $newtarget $file' {} \; ; unset IFS; done

See also