Last active
November 1, 2019 07:18
-
-
Save jvcleave/46386092bd17da55e37d5bbbd11fb592 to your computer and use it in GitHub Desktop.
Stretch build
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/bash | |
set -e | |
trap 'previous_command=$this_command; this_command=$BASH_COMMAND' DEBUG | |
trap 'echo FAILED COMMAND: $previous_command' EXIT | |
#------------------------------------------------------------------------------------------- | |
# This script will download packages for, configure, build and install a GCC cross-compiler. | |
# Customize the variables (INSTALL_PATH, TARGET, etc.) to your liking before running. | |
# If you get an error and need to resume the script from some point in the middle, | |
# just delete/comment the preceding lines before running it again. | |
# | |
# See: http://preshing.com/20141119/how-to-build-a-gcc-cross-compiler | |
#------------------------------------------------------------------------------------------- | |
export SYSROOT=/home/pi/RPI_ROOT | |
INSTALL_PATH=/opt/cross | |
TARGET=arm-linux-gnueabihf | |
LINUX_ARCH=arm | |
CONFIGURATION_OPTIONS="--disable-werror" | |
SYSROOT_OPTIONS="--with-sysroot=$SYSROOT --with-build-sysroot=$SYSROOT" | |
USE_NEWLIB=0 | |
PARALLEL_MAKE=-j4 | |
BINUTILS_VERSION=binutils-2.30 | |
GCC_VERSION=gcc-6.4.0 | |
LINUX_KERNEL_VERSION=linux-4.9.80 | |
GLIBC_VERSION=glibc-2.27 | |
MPFR_VERSION=mpfr-3.1.2 | |
GMP_VERSION=gmp-6.0.0a | |
MPC_VERSION=mpc-1.0.2 | |
ISL_VERSION=isl-0.16.1 | |
CLOOG_VERSION=cloog-0.18.1 | |
export PATH=$INSTALL_PATH/bin:$PATH | |
# Download packages | |
export http_proxy=$HTTP_PROXY https_proxy=$HTTP_PROXY ftp_proxy=$HTTP_PROXY | |
wget -nc https://ftp.gnu.org/gnu/binutils/$BINUTILS_VERSION.tar.gz | |
wget -nc https://ftp.gnu.org/gnu/gcc/$GCC_VERSION/$GCC_VERSION.tar.gz | |
wget -nc https://www.kernel.org/pub/linux/kernel/v4.x/$LINUX_KERNEL_VERSION.tar.xz | |
wget -nc https://ftp.gnu.org/gnu/glibc/$GLIBC_VERSION.tar.xz | |
wget -nc https://ftp.gnu.org/gnu/mpfr/$MPFR_VERSION.tar.xz | |
wget -nc https://ftp.gnu.org/gnu/gmp/$GMP_VERSION.tar.xz | |
wget -nc https://ftp.gnu.org/gnu/mpc/$MPC_VERSION.tar.gz | |
wget -nc ftp://gcc.gnu.org/pub/gcc/infrastructure/$ISL_VERSION.tar.bz2 | |
wget -nc ftp://gcc.gnu.org/pub/gcc/infrastructure/$CLOOG_VERSION.tar.gz | |
# Extract everything | |
for f in *.tar*; do tar xfkv $f; done | |
# Make symbolic links | |
cd $GCC_VERSION | |
ln -sf `ls -1d ../mpfr-*/` mpfr | |
ln -sf `ls -1d ../gmp-*/` gmp | |
ln -sf `ls -1d ../mpc-*/` mpc | |
ln -sf `ls -1d ../isl-*/` isl | |
#ln -sf `ls -1d ../cloog-*/` cloog | |
cd .. | |
# Step 1. Binutils | |
mkdir -p build-binutils | |
cd build-binutils | |
../$BINUTILS_VERSION/configure --prefix=$INSTALL_PATH --target=$TARGET $CONFIGURATION_OPTIONS $SYSROOT_OPTIONS | |
make $PARALLEL_MAKE | |
make install | |
cd .. | |
# Step 2. Linux Kernel Headers | |
if [ $USE_NEWLIB -eq 0 ]; then | |
cd $LINUX_KERNEL_VERSION | |
make ARCH=$LINUX_ARCH INSTALL_HDR_PATH=$INSTALL_PATH/$TARGET headers_install | |
cd .. | |
fi | |
# Step 3. C/C++ Compilers | |
mkdir -p build-gcc | |
cd build-gcc | |
if [ $USE_NEWLIB -ne 0 ]; then | |
NEWLIB_OPTION=--with-newlib | |
fi | |
../$GCC_VERSION/configure --prefix=$INSTALL_PATH --target=$TARGET --enable-languages=c,c++ --with-float=hard $CONFIGURATION_OPTIONS $SYSROOT_OPTIONS | |
make $PARALLEL_MAKE all-gcc | |
make install-gcc | |
cd .. | |
if [ $USE_NEWLIB -ne 0 ]; then | |
# Steps 4-6: Newlib | |
mkdir -p build-newlib | |
cd build-newlib | |
../newlib-master/configure --prefix=$INSTALL_PATH --target=$TARGET $CONFIGURATION_OPTIONS | |
make $PARALLEL_MAKE | |
make install | |
cd .. | |
else | |
# Step 4. Standard C Library Headers and Startup Files | |
mkdir -p build-glibc | |
cd build-glibc | |
../$GLIBC_VERSION/configure --prefix=$INSTALL_PATH/$TARGET --build=$MACHTYPE --host=$TARGET --target=$TARGET --with-headers=$INSTALL_PATH/$TARGET/include $CONFIGURATION_OPTIONS libc_cv_forced_unwind=yes | |
make install-bootstrap-headers=yes install-headers | |
make $PARALLEL_MAKE csu/subdir_lib | |
install csu/crt1.o csu/crti.o csu/crtn.o $INSTALL_PATH/$TARGET/lib | |
$TARGET-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o $INSTALL_PATH/$TARGET/lib/libc.so | |
touch $INSTALL_PATH/$TARGET/include/gnu/stubs.h | |
cd .. | |
# Step 5. Compiler Support Library | |
cd build-gcc | |
make $PARALLEL_MAKE all-target-libgcc | |
make install-target-libgcc | |
cd .. | |
# Step 6. Standard C Library & the rest of Glibc | |
cd build-glibc | |
make $PARALLEL_MAKE | |
make install | |
cd .. | |
fi | |
# Step 7. Standard C++ Library & the rest of GCC | |
cd build-gcc | |
make $PARALLEL_MAKE all | |
make install | |
cd .. | |
trap - EXIT | |
echo 'Success!' | |
cd usr/lib/arm-linux-gnueabihf
rm libudev.so libanl.so libBrokenLocale.so libcidn.so libcrypt.so libdbus-1.so libdl.so libexpat.so libglib-2.0.so liblzma.so libm.so libnsl.so libnss_compat.so libnss_dns.so libnss_files.so libnss_hesiod.so libnss_nisplus.so libnss_nis.so libpcre.so libresolv.so libthread_db.so libusb-1.0.so libutil.so libz.so
ln -s ../../../lib/arm-linux-gnueabihf/libanl.so.1 libanl.so
ln -s ../../../lib/arm-linux-gnueabihf/libBrokenLocale.so.1 libBrokenLocale.so
ln -s ../../../lib/arm-linux-gnueabihf/libcidn.so.1 libcidn.so
ln -s ../../../lib/arm-linux-gnueabihf/libcrypt.so.1 libcrypt.so
ln -s ../../../lib/arm-linux-gnueabihf/libdbus-1.so.3.14.15 libdbus-1.so
ln -s ../../../lib/arm-linux-gnueabihf/libdl.so.2 libdl.so
ln -s ../../../lib/arm-linux-gnueabihf/libexpat.so.1.6.2 libexpat.so
ln -s ../../../lib/arm-linux-gnueabihf/libglib-2.0.so.0 libglib-2.0.so
ln -s ../../../lib/arm-linux-gnueabihf/liblzma.so.5.2.2 liblzma.so
ln -s ../../../lib/arm-linux-gnueabihf/libm.so.6 libm.so
ln -s ../../../lib/arm-linux-gnueabihf/libnsl.so.1 libnsl.so
ln -s ../../../lib/arm-linux-gnueabihf/libnss_compat.so.2 libnss_compat.so
ln -s ../../../lib/arm-linux-gnueabihf/libnss_dns.so.2 libnss_dns.so
ln -s ../../../lib/arm-linux-gnueabihf/libnss_files.so.2 libnss_files.so
ln -s ../../../lib/arm-linux-gnueabihf/libnss_hesiod.so.2 libnss_hesiod.so
ln -s ../../../lib/arm-linux-gnueabihf/libnss_nisplus.so.2 libnss_nisplus.so
ln -s ../../../lib/arm-linux-gnueabihf/libnss_nis.so.2 libnss_nis.so
ln -s ../../../lib/arm-linux-gnueabihf/libpcre.so.3 libpcre.so
ln -s ../../../lib/arm-linux-gnueabihf/libresolv.so.2 libresolv.so
ln -s ../../../lib/arm-linux-gnueabihf/libthread_db.so.1 libthread_db.so
ln -s ../../../lib/arm-linux-gnueabihf/libusb-1.0.so.0.1.0 libusb-1.0.so
ln -s ../../../lib/arm-linux-gnueabihf/libutil.so.1 libutil.so
ln -s ../../../lib/arm-linux-gnueabihf/libz.so.1.2.8 libz.so
There were a couple of extra files I had to relink, here's my full list:
rm libanl.so libBrokenLocale.so libcidn.so libcrypt.so libdbus-1.so libdl.so libexpat.so libglib-2.0.so liblzma.so libm.so libmnl.so libnsl.so libnss_compat.so libnss_dns.so libnss_files.so libnss_hesiod.so libnss_nisplus.so libnss_nis.so libpcre.so libresolv.so librt.so libthread_db.so libusb-1.0.so libutil.so libuuid.so libz.so
ln -s ../../../lib/arm-linux-gnueabihf/libanl.so.1 libanl.so
ln -s ../../../lib/arm-linux-gnueabihf/libBrokenLocale.so.1 libBrokenLocale.so
ln -s ../../../lib/arm-linux-gnueabihf/libcidn.so.1 libcidn.so
ln -s ../../../lib/arm-linux-gnueabihf/libcrypt.so.1 libcrypt.so
ln -s ../../../lib/arm-linux-gnueabihf/libdbus-1.so.3.14.15 libdbus-1.so
ln -s ../../../lib/arm-linux-gnueabihf/libdl.so.2 libdl.so
ln -s ../../../lib/arm-linux-gnueabihf/libexpat.so.1.6.2 libexpat.so
ln -s ../../../lib/arm-linux-gnueabihf/libglib-2.0.so.0 libglib-2.0.so
ln -s ../../../lib/arm-linux-gnueabihf/liblzma.so.5.2.2 liblzma.so
ln -s ../../../lib/arm-linux-gnueabihf/libm.so.6 libm.so
ln -s ../../../lib/arm-linux-gnueabihf/libmnl.so.0.2.0 libmnl.so
ln -s ../../../lib/arm-linux-gnueabihf/libnsl.so.1 libnsl.so
ln -s ../../../lib/arm-linux-gnueabihf/libnss_compat.so.2 libnss_compat.so
ln -s ../../../lib/arm-linux-gnueabihf/libnss_dns.so.2 libnss_dns.so
ln -s ../../../lib/arm-linux-gnueabihf/libnss_files.so.2 libnss_files.so
ln -s ../../../lib/arm-linux-gnueabihf/libnss_hesiod.so.2 libnss_hesiod.so
ln -s ../../../lib/arm-linux-gnueabihf/libnss_nisplus.so.2 libnss_nisplus.so
ln -s ../../../lib/arm-linux-gnueabihf/libnss_nis.so.2 libnss_nis.so
ln -s ../../../lib/arm-linux-gnueabihf/libpcre.so.3 libpcre.so
ln -s ../../../lib/arm-linux-gnueabihf/libresolv.so.2 libresolv.so
ln -s ../../../lib/arm-linux-gnueabihf/librt.so.1 librt.so
ln -s ../../../lib/arm-linux-gnueabihf/libthread_db.so.1 libthread_db.so
ln -s ../../../lib/arm-linux-gnueabihf/libusb-1.0.so.0.1.0 libusb-1.0.so
ln -s ../../../lib/arm-linux-gnueabihf/libutil.so.1 libutil.so
ln -s ../../../lib/arm-linux-gnueabihf/libuuid.so.1.3.0 libuuid.so
ln -s ../../../lib/arm-linux-gnueabihf/libz.so.1.2.8 libz.so
/etc/fstab entries to solve permission issues in writing to RPi
//rpi3.local/Data /media/Data cifs credentials=/home/pi/.smbcredentials,iocharset=utf8,gid=1000,uid=1000,file_mode=0777,dir_mode=0777 0 0
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
VM ISO (Needed 15 GB of space 👎 )
http://caesar.ftp.acc.umu.se/mirror/cdimage/release/9.4.0-live/amd64/iso-hybrid/debian-live-9.4.0-amd64-xfce.iso
2019 better options
netboot images allow no gui/no libreoffice, etc
http://ftp.nl.debian.org/debian/dists/buster/main/installer-amd64/current/images/netboot/
VM PACKAGES NEEDED:
sudo apt-get install bison
needs fix applied to OF 0.10.
openframeworks/openFrameworks#5741 (comment)
variables in ~/.profile