Building uboot fails on Ubuntu Xenial with compiler-gcc5.h error

I use decent version of Ubuntu Xenial but get following error when trying to build uboot:

gytis@ubuntu-build-vm:~/khadas/android/uboot$ make CROSS_COMPILE=aarch64-linux-gnu- kvim_defconfig
  GEN     ./Makefile
#
# configuration written to .config
#
gytis@ubuntu-build-vm:~/khadas/android/uboot$ make CROSS_COMPILE=aarch64-linux-gnu-
  GEN     ./Makefile
scripts/kconfig/conf --silentoldconfig Kconfig
  CHK     include/config.h
  GEN     include/autoconf.mk
In file included from ../include/linux/compiler.h:54:0,
                 from ../include/linux/byteorder/little_endian.h:12,
                 from ../arch/arm/include/asm/byteorder.h:29,
                 from ../include/compiler.h:125,
                 from ../include/image.h:19,
                 from ../include/common.h:82:
../include/linux/compiler-gcc.h:114:30: fatal error: linux/compiler-gcc5.h: No such file or directory
compilation terminated.
../scripts/Makefile.autoconf:64: recipe for target 'include/autoconf.mk' failed
make[3]: *** [include/autoconf.mk] Error 1
../Makefile:478: recipe for target 'silentoldconfig' failed
make[2]: *** [silentoldconfig] Error 1
make[1]: *** No rule to make target 'include/config/auto.conf', needed by 'include/config/uboot.release'.  Stop.
Makefile:147: recipe for target 'sub-make' failed
make: *** [sub-make] Error 2

That’s interesting why build process refers to compiler-gcc5.h while in system I have gcc 4.9 configured:

gytis@ubuntu-build-vm:~/khadas/android/uboot$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.9/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.9.3-13ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.9.3 (Ubuntu 4.9.3-13ubuntu2)

Can you hint me what could possibly be wrong? :slightly_smiling_face:

@Gytis . You can upgarde you gcc version.Do you know how to upgrade?

Hello @Gytis

Can you try to apply this patch?

1 Like

Thanks, this commit helped to solve the issue :slightly_smiling_face:

However I have next error below:

  CC      drivers/nand/phy/phydev.o
../drivers/nand/phy/phydev.c: In function ‘aml_alloc_phydev’:
../drivers/nand/phy/phydev.c:1323:9: error: passing argument 1 of ‘memcpy’ discards ‘const’ qualifier from pointer target type [-Werror=discarded-array-qualifiers]
  memcpy(&phydev_p->name, &(*dev_para)->name, MAX_DEVICE_NAME_LEN*sizeof(char));
         ^
In file included from ../drivers/nand/phy/../include/../include/amlnf_type.h:10:0,
                 from ../drivers/nand/phy/../include/../include/amlnf_dev.h:4,
                 from ../drivers/nand/phy/../include/phynand.h:4,
                 from ../drivers/nand/phy/phydev.c:14:
../include/malloc.h:365:7: note: expected ‘void *’ but argument is of type ‘const char (*)[16]’
 void* memcpy(void*, const void*, size_t);
       ^
cc1: all warnings being treated as errors
../scripts/Makefile.build:275: recipe for target 'drivers/nand/phy/phydev.o' failed
make[3]: *** [drivers/nand/phy/phydev.o] Error 1
../scripts/Makefile.build:420: recipe for target 'drivers/nand/phy' failed
make[2]: *** [drivers/nand/phy] Error 2
/home/gytis/khadas/android/uboot/Makefile:1256: recipe for target 'drivers/nand' failed
make[1]: *** [drivers/nand] Error 2
Makefile:147: recipe for target 'sub-make' failed
make: *** [sub-make] Error 2

This is regardless which gcc version is used - tried with bothh gcc 4.9 and default 5.4.0.

Please use the default cross compile toolchain to build the u-boot.

The toolchain is:

gcc-linaro-aarch64-none-elf: https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz
gcc-linaro-arm-none-eabi: https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-arm-none-eabi-4.8-2013.11_linux.tar.xz

I’ve installed them as documentation shows but still get the same result :neutral_face:

You build android u-boot or linux u-boot?

Android Oreo’s u-boot.

OK. Maybe @Terry @Waylon will help you.

Hi, Gytis
We will release Android Pie for VIM1 soon. Don’t pay more attentions for Android Oreo. Thanks.

2 Likes