Debian Toolchain installation: Difference between revisions
(Build the sysroot/rootfs: drop link to Debian packages directory (moved to 'Adding Debian packages')) |
(Build the sysroot: add how to create/build the sysroot) |
||
Line 19: | Line 19: | ||
|info}} | |info}} | ||
= Build the sysroot | = Build the sysroot = | ||
To build the rootfs, which can be used as the sysroot for the cross-compilation, please follow the steps of the section {{varlink|Debian Build Release Stage#Setup and build Debian|{{#var:RELEASE_LINK}}|Setup and build Debian}}. | To build the rootfs, which can be used as the sysroot for the cross-compilation, please follow the steps of the section {{varlink|Debian Build Release Stage#Setup and build Debian|{{#var:RELEASE_LINK}}|Setup and build Debian}}. | ||
Line 30: | Line 29: | ||
Please refer to the {{Varlink2|Debian Setup TFTP/NFS|{{#var:RELASE_LINK}}}} guide for more information on how to setup a TFTP/NFS configuration. | Please refer to the {{Varlink2|Debian Setup TFTP/NFS|{{#var:RELASE_LINK}}}} guide for more information on how to setup a TFTP/NFS configuration. | ||
}} | }} | ||
First, create a copy of the origin rootfs: | |||
$ cd {{#var:BUILD_FOLDER}} | |||
$ mkdir -p tmp/sysroot | |||
$ cp -avr rootfs/. tmp/rootfs | |||
Next, we need to convert absolute links to relative ones by using chroot and the tool sysmlinks: | |||
$ export ROOTFS_BASE=tmp/rootfs | |||
$ sudo cp variscite/qemu_64bit/qemu-aarch64-static ${ROOTFS_BASE}/usr/bin/qemu-aarch64-static | |||
$ sudo mount -o bind /proc ${ROOTFS_BASE}/proc | |||
$ sudo mount -o bind /dev ${ROOTFS_BASE}/dev | |||
$ sudo mount -o bind /sys ${ROOTFS_BASE}/sys | |||
$ sudo mount -o bind /dev/pts ${ROOTFS_BASE}/dev/pts | |||
$ sudo chroot $ROOTFS_BASE | |||
# apt-get install -y sysmlinks | |||
# symlinks -cr . | |||
# exit | |||
$ sudo umount ${ROOTFS_BASE}/dev/pts | |||
$ sudo umount ${ROOTFS_BASE}/sys | |||
$ sudo umount ${ROOTFS_BASE}/dev | |||
$ sudo umount ${ROOTFS_BASE}/proc | |||
This will make it possible, to use the file system on the host for cross-compilation.<br> | |||
Finally, we will create the syroot with a minimal set of the modified (relative links) rootfs: | |||
$ mkdir -p toolchain/sysroot/ | |||
$ cp tmp/rootfs/lib toolchain/sysroot/ | |||
$ cp tmp/rootfs/usr/lib toolchain/sysroot/ | |||
$ cp tmp/rootfs/usr/include toolchain/sysroot/ | |||
And delete the temporary rootfs: | |||
$ rm -rf tmp/sysroot |
Revision as of 11:16, 27 April 2023
This page is using the default release mx8m-debian-bullseye-5.4-2.1.x-v1.4.
To view this page for a specific Variscite SoM and software release, please follow these steps:
- Visit variwiki.com
- Select your SoM
- Select the software release
Installing the toolchain
To install the toolchain, please go through the following steps of the Debian Build Release guide:
- Setup Development Environment
- Installing required packages
- Download Debian archive
- Deploy/Fetch the sources and components
You will have a development environment from this point, including the toolchain and the packages ready to be used.
The GNU Linux toolchain gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu can be found at ~/debian_imx8mq-var-dart_debian_bullseye/toolchain.
Build the sysroot
To build the rootfs, which can be used as the sysroot for the cross-compilation, please follow the steps of the section Setup and build Debian.
The Debian build script uses debootstrap to create a minimal Debian Bullseye system and adds the BSP support. Please consider installing extra (dev-)packages to your Debian file system as per your needs.
Please follow the Adding Debian packages guide to learn how to add packages to the rootfs.
Please refer to the Debian Setup TFTP/NFS guide for more information on how to setup a TFTP/NFS configuration.
First, create a copy of the origin rootfs:
$ cd ~/debian_imx8mq-var-dart_debian_bullseye $ mkdir -p tmp/sysroot $ cp -avr rootfs/. tmp/rootfs
Next, we need to convert absolute links to relative ones by using chroot and the tool sysmlinks:
$ export ROOTFS_BASE=tmp/rootfs $ sudo cp variscite/qemu_64bit/qemu-aarch64-static ${ROOTFS_BASE}/usr/bin/qemu-aarch64-static $ sudo mount -o bind /proc ${ROOTFS_BASE}/proc $ sudo mount -o bind /dev ${ROOTFS_BASE}/dev $ sudo mount -o bind /sys ${ROOTFS_BASE}/sys $ sudo mount -o bind /dev/pts ${ROOTFS_BASE}/dev/pts $ sudo chroot $ROOTFS_BASE # apt-get install -y sysmlinks # symlinks -cr . # exit $ sudo umount ${ROOTFS_BASE}/dev/pts $ sudo umount ${ROOTFS_BASE}/sys $ sudo umount ${ROOTFS_BASE}/dev $ sudo umount ${ROOTFS_BASE}/proc
This will make it possible, to use the file system on the host for cross-compilation.
Finally, we will create the syroot with a minimal set of the modified (relative links) rootfs:
$ mkdir -p toolchain/sysroot/ $ cp tmp/rootfs/lib toolchain/sysroot/ $ cp tmp/rootfs/usr/lib toolchain/sysroot/ $ cp tmp/rootfs/usr/include toolchain/sysroot/
And delete the temporary rootfs:
$ rm -rf tmp/sysroot