1

I am using RPI3 model B

I have compiled toolchain using crosstool-ng with the following sample.

./ct-ng aarch64-rpi3-linux-gnu

Using ./ct-ng menuconfig, I changed C library from glibc to uClibc. And then toolchain is built with command ./ct-ng build

With this toolchain, I have cross compiled U-Boot for RPI3 model b. I am able to load the boocode.bin, start.elf and U-Boot and able to execute U-Boot commands from the console.

Now I wanted to cross compile the Linux kernel. But I am unable to build with this toolchain. Here are the compilation logs ...

nayab@dobglr:linux$ make ARCH=arm CROSS_COMPILE=arm-linux-rpi3- bcm2709_defconfig V=1
make -f ./scripts/Makefile.build obj=scripts/basic
  gcc -Wp,-MD,scripts/basic/.fixdep.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89         -o scripts/basic/fixdep scripts/basic/fixdep.c   
rm -f .tmp_quiet_recordmcount
make -f ./scripts/Makefile.build obj=scripts/kconfig bcm2709_defconfig
  gcc -Wp,-MD,scripts/kconfig/.conf.o.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89       -c -o scripts/kconfig/conf.o scripts/kconfig/conf.c
  bison -oscripts/kconfig/zconf.tab.c -t -l scripts/kconfig/zconf.y
  flex -oscripts/kconfig/zconf.lex.c -L scripts/kconfig/zconf.l
  gcc -Wp,-MD,scripts/kconfig/.zconf.tab.o.d -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89      -Iscripts/kconfig -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
  gcc   -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o   
scripts/kconfig/conf  --defconfig=arch/arm/configs/bcm2709_defconfig Kconfig
#
# configuration written to .config
#
nayab@dobglr:linux$ 
nayab@dobglr:linux$ 
nayab@dobglr:linux$ 
nayab@dobglr:linux$ 
nayab@dobglr:linux$ 
nayab@dobglr:linux$ 
nayab@dobglr:linux$ make ARCH=arm CROSS_COMPILE=arm-linux-rpi3- zImage modules dtbs V=1
make -f ./scripts/Makefile.build obj=arch/arm/tools uapi
  /bin/sh './arch/arm/tools/syscallhdr.sh' 'arch/arm/tools/syscall.tbl' 'arch/arm/include/generated/uapi/asm/unistd-common.h' 'common' '' '__NR_SYSCALL_BASE'
  /bin/sh './arch/arm/tools/syscallhdr.sh' 'arch/arm/tools/syscall.tbl' 'arch/arm/include/generated/uapi/asm/unistd-oabi.h' 'oabi' '' '__NR_SYSCALL_BASE'
  /bin/sh './arch/arm/tools/syscallhdr.sh' 'arch/arm/tools/syscall.tbl' 'arch/arm/include/generated/uapi/asm/unistd-eabi.h' 'eabi' '' '__NR_SYSCALL_BASE'
set -e; mkdir -p include/config/;   echo "4.19.114$(/bin/sh ./scripts/setlocalversion .)" > include/config/kernel.release.tmp; if [ -r include/config/kernel.release ] && cmp -s include/config/kernel.release include/config/kernel.release.tmp; then rm -f include/config/kernel.release.tmp; else : '  UPD     include/config/kernel.release'; mv -f include/config/kernel.release.tmp include/config/kernel.release; fi
make -f ./scripts/Makefile.asm-generic \
            src=uapi/asm obj=arch/arm/include/generated/uapi/asm
  echo "#include <asm-generic/bitsperlong.h>" >arch/arm/include/generated/uapi/asm/bitsperlong.h
  echo "#include <asm-generic/bpf_perf_event.h>" >arch/arm/include/generated/uapi/asm/bpf_perf_event.h
  echo "#include <asm-generic/errno.h>" >arch/arm/include/generated/uapi/asm/errno.h
  echo "#include <asm-generic/ioctl.h>" >arch/arm/include/generated/uapi/asm/ioctl.h
  echo "#include <asm-generic/ipcbuf.h>" >arch/arm/include/generated/uapi/asm/ipcbuf.h
  echo "#include <asm-generic/msgbuf.h>" >arch/arm/include/generated/uapi/asm/msgbuf.h
  echo "#include <asm-generic/param.h>" >arch/arm/include/generated/uapi/asm/param.h
  echo "#include <asm-generic/poll.h>" >arch/arm/include/generated/uapi/asm/poll.h
  echo "#include <asm-generic/resource.h>" >arch/arm/include/generated/uapi/asm/resource.h
  echo "#include <asm-generic/sembuf.h>" >arch/arm/include/generated/uapi/asm/sembuf.h
  echo "#include <asm-generic/shmbuf.h>" >arch/arm/include/generated/uapi/asm/shmbuf.h
  echo "#include <asm-generic/siginfo.h>" >arch/arm/include/generated/uapi/asm/siginfo.h
  echo "#include <asm-generic/socket.h>" >arch/arm/include/generated/uapi/asm/socket.h
  echo "#include <asm-generic/sockios.h>" >arch/arm/include/generated/uapi/asm/sockios.h
  echo "#include <asm-generic/termbits.h>" >arch/arm/include/generated/uapi/asm/termbits.h
  echo "#include <asm-generic/termios.h>" >arch/arm/include/generated/uapi/asm/termios.h
make -f ./scripts/Makefile.asm-generic \
            src=asm obj=arch/arm/include/generated/asm
  echo "#include <asm-generic/compat.h>" >arch/arm/include/generated/asm/compat.h
  echo "#include <asm-generic/current.h>" >arch/arm/include/generated/asm/current.h
  echo "#include <asm-generic/early_ioremap.h>" >arch/arm/include/generated/asm/early_ioremap.h
  echo "#include <asm-generic/emergency-restart.h>" >arch/arm/include/generated/asm/emergency-restart.h
  echo "#include <asm-generic/exec.h>" >arch/arm/include/generated/asm/exec.h
  echo "#include <asm-generic/extable.h>" >arch/arm/include/generated/asm/extable.h
  echo "#include <asm-generic/irq_regs.h>" >arch/arm/include/generated/asm/irq_regs.h
  echo "#include <asm-generic/kdebug.h>" >arch/arm/include/generated/asm/kdebug.h
  echo "#include <asm-generic/local.h>" >arch/arm/include/generated/asm/local.h
  echo "#include <asm-generic/local64.h>" >arch/arm/include/generated/asm/local64.h
  echo "#include <asm-generic/mm-arch-hooks.h>" >arch/arm/include/generated/asm/mm-arch-hooks.h
  echo "#include <asm-generic/msi.h>" >arch/arm/include/generated/asm/msi.h
  echo "#include <asm-generic/parport.h>" >arch/arm/include/generated/asm/parport.h
  echo "#include <asm-generic/preempt.h>" >arch/arm/include/generated/asm/preempt.h
  echo "#include <asm-generic/rwsem.h>" >arch/arm/include/generated/asm/rwsem.h
  echo "#include <asm-generic/seccomp.h>" >arch/arm/include/generated/asm/seccomp.h
  echo "#include <asm-generic/segment.h>" >arch/arm/include/generated/asm/segment.h
  echo "#include <asm-generic/serial.h>" >arch/arm/include/generated/asm/serial.h
  echo "#include <asm-generic/simd.h>" >arch/arm/include/generated/asm/simd.h
  echo "#include <asm-generic/sizes.h>" >arch/arm/include/generated/asm/sizes.h
  echo "#include <asm-generic/timex.h>" >arch/arm/include/generated/asm/timex.h
  echo "#include <asm-generic/trace_clock.h>" >arch/arm/include/generated/asm/trace_clock.h
set -e; mkdir -p include/generated/uapi/linux/;     (echo \#define LINUX_VERSION_CODE 267122; echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';) > include/generated/uapi/linux/version.h.tmp; if [ -r include/generated/uapi/linux/version.h ] && cmp -s include/generated/uapi/linux/version.h include/generated/uapi/linux/version.h.tmp; then rm -f include/generated/uapi/linux/version.h.tmp; else : '  UPD     include/generated/uapi/linux/version.h'; mv -f include/generated/uapi/linux/version.h.tmp include/generated/uapi/linux/version.h; fi
rm -f include/linux/version.h
set -e; mkdir -p include/generated/;    if [ `echo -n "4.19.114-v7+" | wc -c ` -gt 64 ]; then echo '"4.19.114-v7+" exceeds 64 characters' >&2; exit 1; fi; (echo \#define UTS_RELEASE \"4.19.114-v7+\";) > include/generated/utsrelease.h.tmp; if [ -r include/generated/utsrelease.h ] && cmp -s include/generated/utsrelease.h include/generated/utsrelease.h.tmp; then rm -f include/generated/utsrelease.h.tmp; else : '  UPD     include/generated/utsrelease.h'; mv -f include/generated/utsrelease.h.tmp include/generated/utsrelease.h; fi
mkdir -p .tmp_versions ; rm -f .tmp_versions/*
make -f ./scripts/Makefile.build obj=scripts/basic
(cat /dev/null; ) > scripts/basic/modules.order
rm -f .tmp_quiet_recordmcount
make -f ./scripts/Makefile.build obj=arch/arm/tools kapi
  /bin/sh './arch/arm/tools/syscallnr.sh' 'arch/arm/tools/syscall.tbl' 'arch/arm/include/generated/asm/unistd-nr.h' ''
  mkdir -p arch/arm/include/generated/asm/ && awk -f arch/arm/tools/gen-mach-types arch/arm/tools/mach-types > arch/arm/include/generated/asm/mach-types.h || { rm -f arch/arm/include/generated/asm/mach-types.h; /bin/false; }
  /bin/sh './arch/arm/tools/syscalltbl.sh' 'arch/arm/tools/syscall.tbl' 'arch/arm/include/generated/calls-oabi.S' 'common,oabi'
  /bin/sh './arch/arm/tools/syscalltbl.sh' 'arch/arm/tools/syscall.tbl' 'arch/arm/include/generated/calls-eabi.S' 'common,eabi'
make -f ./scripts/Makefile.build obj=.
(cat /dev/null; ) > modules.order
  arm-linux-rpi3-gcc -Wp,-MD,kernel/.bounds.s.d  -nostdinc -isystem /home/nayab/x-tools/aarch64-rpi3-linux-uclibc/lib/gcc/aarch64-rpi3-linux-uclibc/9.2.0/include -I./arch/arm/include -I./arch/arm/include/generated  -I./include -I./arch/arm/include/uapi -I./arch/arm/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -fno-dwarf2-cfi-asm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=aapcs-linux -mfpu=vfp -funwind-tables -Wa,-W -D__LINUX_ARM_ARCH__=7 -march=armv5t -Wa,-march=armv7-a -msoft-float -Uarm -O2 -fstack-protector-strong -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg    -DKBUILD_BASENAME='"bounds"' -DKBUILD_MODNAME='"bounds"'  -fverbose-asm -S -o kernel/bounds.s kernel/bounds.c
arm-linux-rpi3-gcc: error: unrecognized argument in option '-mabi=aapcs-linux'
arm-linux-rpi3-gcc: note: valid arguments to '-mabi=' are: ilp32 lp64
arm-linux-rpi3-gcc: error: unrecognized command line option '-mapcs'
arm-linux-rpi3-gcc: error: unrecognized command line option '-mno-sched-prolog'
arm-linux-rpi3-gcc: error: unrecognized command line option '-mfpu=vfp'
arm-linux-rpi3-gcc: error: unrecognized command line option '-msoft-float'
make[1]: *** [Kbuild:21: kernel/bounds.s] Error 1
make: *** [Makefile:1102: prepare0] Error 2
nayab@dobglr:linux$ 
nayab@dobglr:linux$ 
nayab@dobglr:linux$ 
nayab@dobglr:linux$ 
nayab@dobglr:linux$ file ~/x-tools/aarch64-rpi3-linux-uclibc/bin/arm-linux-rpi3-gcc
/home/nayab/x-tools/aarch64-rpi3-linux-uclibc/bin/arm-linux-rpi3-gcc: symbolic link to aarch64-rpi3-linux-uclibc-gcc
nayab@dobglr:linux$ 

I would like to know if it is possible to compile kernel using this toolchain. If yes, could anybody help me resolve the above errors.

Note : The original offical forum thread can be found here

NayabSD
  • 111
  • 3

0 Answers0