Changes

Jump to: navigation, search

Create Debian sysroots

1,441 bytes added, 14:55, 24 November 2019
Prerequisites
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 [httpsEverything below runs on the '''debootstrap machine''' as root://wiki.debian.org/Debootstrap debootstrap].
== Install debootstrap == sudo -i
sudo apt install -y debootstrap=== Prerequisites ===
== Run [[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 ==], with a configured QEMU user emulator. In practice only Debian and Ubuntu will work.
=== Install debootstrap and associated tools ===  for arch in apt install -y binfmt-support qemu qemu-user-static debootstrap === Run debootstrap ===  <nowiki>mkdir -p /tmp/sysrootscd /tmp/sysrootsarches="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 sudo IFS=","; set $arch; qemu-debootstrap --arch "$arch 1" --variant=buildd stable debian-"$arch 2" http://deb.debian.org/debian; unset IFS; done</nowiki> === 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 == Host machine == === Create directories ===  cd $HOME arches="x86_64-linux-gnu aarch64-linux-gnu mips-linux-gnu mips64el-linux-gnuabi64 powerpc64le-linux-gnu" for arch in $arches; do mkdir -p $HOME/cross/sysroot/$arch/{lib,usr/{include,lib}}; done === Copy sysroots ===  for arch in $arches; do for dir in /lib/ /usr/{include,lib}; do rsync -a ubuntu.local:/tmp/sysroots/$arch/$dir/ $HOME/cross/sysroot/$arch$dir; done; done == Debootstrap machine (again) == === Cleanup === Still as root:  rm -rf /tmp/sysroots
== See also ==
* [https://wiki.debian.org/Debootstrap debootstrap]
* [https://www.debian.org/ports Debian ports]

Navigation menu