Last active
August 5, 2019 08:46
-
-
Save i0z0m/3bdab117999ac2f9342b76e9327313f5 to your computer and use it in GitHub Desktop.
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 | |
PREFIX=/opt/cross | |
BINUTILS_VERSION=binutils-2.28 | |
LINUX_KERNEL_VERSION=linux-4.11.7 | |
GCC_VERSION=gcc-7.1.0 | |
GLIBC_VERSION=glibc-2.25 | |
MPFR_VERSION=mpfr-3.1.5 | |
GMP_VERSION=gmp-6.1.1 | |
MPC_VERSION=mpc-1.0.3 | |
ISL_VERSION=isl-0.16.1 | |
CLOOG_VERSION=cloog-0.18.1 | |
TERMCAP_VERSION=termcap-1.3.1 | |
GDB_VERSION=gdb-8.0 | |
# Download packages | |
mkdir archives | |
cd archives | |
wget -nc http://ftpmirror.gnu.org/binutils/$BINUTILS_VERSION.tar.gz | |
wget -nc https://www.kernel.org/pub/linux/kernel/v4.x/$LINUX_KERNEL_VERSION.tar.xz | |
wget -nc http://ftpmirror.gnu.org/gcc/$GCC_VERSION/$GCC_VERSION.tar.gz | |
wget -nc http://ftpmirror.gnu.org/glibc/$GLIBC_VERSION.tar.xz | |
wget -nc http://ftp.jaist.ac.jp/pub/GNU/mpfr/$MPFR_VERSION.tar.gz | |
wget -nc http://ftp.jaist.ac.jp/pub/GNU/gmp/$GMP_VERSION.tar.xz | |
wget -nc http://ftp.jaist.ac.jp/pub/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 | |
wget -nc ftp://ftp.gnu.org/gnu/termcap/$TERMCAP_VERSION.tar.gz | |
wget -nc http://ftp.gnu.org/gnu/gdb/$GDB_VERSION.tar.gz | |
# Extract everything | |
for f in *.tar*; do | |
tar xfk $f | |
done | |
# Download requirements for gcc | |
cd $GCC_VERSION | |
ln -s ../$MPFR_VERSION mpfr | |
ln -s ../$GMP_VERSION gmp | |
ln -s ../$MPC_VERSION mpc | |
ln -s ../$ISL_VERSION isl | |
ln -s ../$CLOOG_VERSION cloog | |
cd .. | |
mkdir -p $PREFIX | |
chown ubuntu $PREFIX | |
export PATH=$PREFIX/bin:$PATH | |
build() { | |
local TARGET="$1" | |
local LINUX_ARCH="$2" | |
# Step 1. Binutils | |
mkdir -p build-binutils-$TARGET | |
cd build-binutils-$TARGET | |
../$BINUTILS_VERSION/configure --prefix=$PREFIX --target=$TARGET $CONFIGURATION_OPTIONS | |
make $PARALLEL_MAKE | |
make install | |
cd .. | |
# Step 2. Linux Kernel Headers | |
cd $LINUX_KERNEL_VERSION | |
make ARCH=$LINUX_ARCH INSTALL_HDR_PATH=$PREFIX/$TARGET headers_install | |
cd .. | |
# Step 3. C/C++ Compilers | |
mkdir -p build-gcc-$TARGET | |
cd build-gcc-$TARGET | |
../$GCC_VERSION/configure --prefix=$PREFIX --target=$TARGET --enable-languages=c,c++ $CONFIGURATION_OPTIONS | |
make $PARALLEL_MAKE all-gcc | |
make install-gcc | |
cd .. | |
# Step 4. Standard C Library Headers and Startup Files | |
mkdir -p build-glibc-$TARGET | |
cd build-glibc-$TARGET | |
../$GLIBC_VERSION/configure --prefix=$PREFIX/$TARGET --build=$MACHTYPE --host=$TARGET --target=$TARGET --with-headers=$PREFIX/$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 $PREFIX/$TARGET/lib | |
# $TARGET-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o $PREFIX/$TARGET/lib/libc.so | |
# touch $PREFIX/$TARGET/include/gnu/stubs.h | |
# cd .. | |
# Step 5. Compiler Support Library | |
# cd build-gcc-$TARGET | |
# make $PARALLEL_MAKE all-target-libgcc | |
# make install-target-libgcc | |
# cd .. | |
# Step 6. Standard C Library & the rest of Glibc | |
# cd build-glibc-$TARGET | |
# make $PARALLEL_MAKE | |
# make install | |
# cd .. | |
# Step 7. Standard C++ Library & the rest of GCC | |
# cd build-gcc-$TARGET | |
# make $PARALLEL_MAKE | |
# make install | |
# cd .. | |
# Step 8. GDB | |
# mkdir -p build-termcap-$TARGET | |
# cd build-termcap-$TARGET | |
# ../$TERMCAP_VERSION/configure --prefix=$PREFIX --target=$TARGET | |
# make $PARALLEL_MAKE | |
# make install | |
# cd .. | |
# mkdir -p build-gdb-$TARGET | |
# cd build-gdb-$TARGET | |
# ../$GDB_VERSION/configure --prefix=$PREFIX --target=$TARGET | |
# make $PARALLEL_MAKE | |
# make install | |
# cd .. | |
} | |
build aarch64-linux-gnu arm64 |
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
ubuntu@ubuntu-xenial:~/archives/build-glibc-aarch64-linux-gnu$sudo make -j4 csu/subdir_lib | |
make -r PARALLELMFLAGS="" -C ../glibc-2.25 objdir=`pwd` csu/subdir_lib | |
make[1]: Entering directory '/home/ubuntu/archives/glibc-2.25' | |
make subdir=csu -C csu ..=../ subdir_lib | |
make[2]: Entering directory '/home/ubuntu/archives/glibc-2.25/csu' | |
.././scripts/mkinstalldirs /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu | |
.././scripts/mkinstalldirs /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu | |
.././scripts/mkinstalldirs /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu | |
gawk -f ../scripts/gen-as-const.awk ../sysdeps/aarch64/nptl/tcb-offsets.sym \ | |
| aarch64-linux-gnu-gcc -S -o /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/tcb-offsets.hT3 -std=gnu11 -fgnu89-inline -O2 -Wall -Werror -Wundef -Wwrite-strings -fmerge-all-constants -fno-stack-protector -frounding-math -g -Wstrict-prototypes -Wold-style-definition -ftls-model=initial-exec -I../include -I/home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu -I/home/ubuntu/archives/build-glibc-aarch64-linux-gnu -I../sysdeps/unix/sysv/linux/aarch64 -I../sysdeps/aarch64/nptl -I../sysdeps/unix/sysv/linux/generic -I../sysdeps/unix/sysv/linux/wordsize-64 -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux -I../sysdeps/nptl -I../sysdeps/pthread -I../sysdeps/gnu -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/aarch64/fpu -I../sysdeps/aarch64 -I../sysdeps/wordsize-64 -I../sysdeps/ieee754/ldbl-128 -I../sysdeps/ieee754/dbl-64/wordsize-64 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/aarch64/soft-fp -I../sysdeps/ieee754 -I../sysdeps/generic -I.. -I../libio -I. -nostdinc -isystem /opt/cross/lib/gcc/aarch64-linux-gnu/7.1.0/include -isystem /opt/cross/lib/gcc/aarch64-linux-gnu/7.1.0/include-fixed -isystem /opt/cross/aarch64-linux-gnu/include -D_LIBC_REENTRANT -include /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/libc-modules.h -DMODULE_NAME=libc -include ../include/libc-symbols.h -x c - \ | |
-MD -MP -MF /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/tcb-offsets.h.dT -MT '/home/ubuntu/archives/build-glibc-aarch64-linux-gnu/tcb-offsets.h.d /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/tcb-offsets.h' | |
mkdir -p -- /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu | |
(files="../crypt/Banner ../libidn/Banner ../nptl/Banner ../resolv/Banner"; \ | |
if test -n "$files"; then \ | |
printf '"Available extensions:\\n"\n'; \ | |
sed -e '/^#/d' -e 's/^[[:space:]]*/ /' \ | |
-e 's/^\(.*\)$/\"\1\\n\"/' $files; \ | |
fi) > /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu/version-info.hT | |
rm -f /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu/abi-tag.h.new | |
/bin/sh: 2: aarch64-linux-gnu-gcc: not found | |
mkdir -p -- /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu | |
sed -e 's/#.*$//' -e '/^[ ]*$/d' ../abi-tags | \ | |
while read conf tagos tagver; do \ | |
test `expr 'aarch64-unknown-linux-gnu' \ | |
: "$conf"` != 0 || continue; \ | |
( echo "$tagos" | \ | |
sed -e 's/[^0-9xXa-fA-F ]//' \ | |
-e 's/^/#define __ABI_TAG_OS /'; \ | |
echo "#ifndef __ABI_TAG_VERSION"; \ | |
echo "$tagver" | \ | |
sed -e 's/[^0-9xXa-fA-F]/ /g' -e 's/ *$//' \ | |
-e 's/ /,/g' -e 's/^/# define __ABI_TAG_VERSION /'; \ | |
echo "#endif" ) > /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu/abi-tag.h.new; \ | |
done | |
gawk -f ../scripts/gen-as-const.awk ../sysdeps/aarch64/tlsdesc.sym \ | |
| aarch64-linux-gnu-gcc -S -o /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/tlsdesc.hT3 -std=gnu11 -fgnu89-inline -O2 -Wall -Werror -Wundef -Wwrite-strings -fmerge-all-constants -fno-stack-protector -frounding-math -g -Wstrict-prototypes -Wold-style-definition -ftls-model=initial-exec -I../include -I/home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu -I/home/ubuntu/archives/build-glibc-aarch64-linux-gnu -I../sysdeps/unix/sysv/linux/aarch64 -I../sysdeps/aarch64/nptl -I../sysdeps/unix/sysv/linux/generic -I../sysdeps/unix/sysv/linux/wordsize-64 -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux -I../sysdeps/nptl -I../sysdeps/pthread -I../sysdeps/gnu -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/aarch64/fpu -I../sysdeps/aarch64 -I../sysdeps/wordsize-64 -I../sysdeps/ieee754/ldbl-128 -I../sysdeps/ieee754/dbl-64/wordsize-64 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/aarch64/soft-fp -I../sysdeps/ieee754 -I../sysdeps/generic -I.. -I../libio -I. -nostdinc -isystem /opt/cross/lib/gcc/aarch64-linux-gnu/7.1.0/include -isystem /opt/cross/lib/gcc/aarch64-linux-gnu/7.1.0/include-fixed -isystem /opt/cross/aarch64-linux-gnu/include -D_LIBC_REENTRANT -include /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/libc-modules.h -DMODULE_NAME=libc -include ../include/libc-symbols.h -x c - \ | |
-MD -MP -MF /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/tlsdesc.h.dT -MT '/home/ubuntu/archives/build-glibc-aarch64-linux-gnu/tlsdesc.h.d /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/tlsdesc.h' | |
/bin/sh: 2: aarch64-linux-gnu-gcc: not found | |
if test -r /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu/abi-tag.h.new; then mv -f /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu/abi-tag.h.new /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu/abi-tag.h; \ | |
else echo >&2 'This configuration not matched in ../abi-tags'; exit 1; fi | |
../Makerules:266: recipe for target '/home/ubuntu/archives/build-glibc-aarch64-linux-gnu/tcb-offsets.h' failed | |
make[2]: *** [/home/ubuntu/archives/build-glibc-aarch64-linux-gnu/tcb-offsets.h] Error 127 | |
make[2]: *** Waiting for unfinished jobs.... | |
../Makerules:266: recipe for target '/home/ubuntu/archives/build-glibc-aarch64-linux-gnu/tlsdesc.h' failed | |
make[2]: *** [/home/ubuntu/archives/build-glibc-aarch64-linux-gnu/tlsdesc.h] Error 127 | |
mv -f /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu/version-info.hT /home/ubuntu/archives/build-glibc-aarch64-linux-gnu/csu/version-info.h | |
make[2]: Leaving directory '/home/ubuntu/archives/glibc-2.25/csu' | |
Makefile:215: recipe for target 'csu/subdir_lib' failed | |
make[1]: *** [csu/subdir_lib] Error 2 | |
make[1]: Leaving directory '/home/ubuntu/archives/glibc-2.25' | |
Makefile:9: recipe for target 'csu/subdir_lib' failed | |
make: *** [csu/subdir_lib] Error 2 | |
ubuntu@ubuntu-xenial:~/archives/build-glibc-aarch64-linux-gnu$ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment