VIM3L编译报错ccache: error: execv of *** aarch64-none-elf-gcc failed: Exec format error

编译报错

ccache: error: execv of /home/kevinc/khadas/fenix/build/toolchains/gcc-linaro-aarch64-none-elf/bin/aarch64-none-elf-gcc failed: Exec format error

编译uboot

kevinc@DESKTOP-36FM0U6:~/khadas/fenix$ make uboot
[i] FENIX (scripts/build.sh) BUILD: /home/kevinc/khadas/fenix/build | DL: /home/kevinc/khadas/fenix/downloads | sudo: sudo -E
Info: Build host: bionic target: bionic
Info: Running in container: wsl
Info: apt-cacher is disabled in containers.
[i] check python -> Python 2.7.17
[i] check python2 -> Python 2.7.17
Info: U-boot: Already on branch 'khadas-vims-v2015.01'
Info: Try to update u-boot:khadas-vims-v2015.01
From https://github.com/khadas/u-boot
 * branch                  khadas-vims-v2015.01 -> FETCH_HEAD
Already up to date.
/home/kevinc/khadas/fenix/build/u-boot
Info: Build u-boot...
Info: U-boot: Force cleaning...
make[1]: Entering directory '/home/kevinc/khadas/fenix/build/u-boot'
  CLEAN   scripts/basic
  CLEAN   scripts/kconfig
  CLEAN   include/config include/generated
  CLEAN   .config include/config.h
make[1]: Leaving directory '/home/kevinc/khadas/fenix/build/u-boot'
make[1]: Entering directory '/home/kevinc/khadas/fenix/build/u-boot'
  HOSTCC  scripts/basic/fixdep
  GEN     ./Makefile
  HOSTCC  scripts/kconfig/conf.o
  SHIPPED scripts/kconfig/zconf.tab.c
  SHIPPED scripts/kconfig/zconf.lex.c
  SHIPPED scripts/kconfig/zconf.hash.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#
make[1]: Leaving directory '/home/kevinc/khadas/fenix/build/u-boot'
make[1]: Entering directory '/home/kevinc/khadas/fenix/build/u-boot'
ccache: error: execv of /home/kevinc/khadas/fenix/build/toolchains/gcc-linaro-aarch64-none-elf/bin/aarch64-none-elf-gcc failed: Exec format error
ccache: error: execv of /home/kevinc/khadas/fenix/build/toolchains/gcc-linaro-aarch64-none-elf/bin/aarch64-none-elf-gcc failed: Exec format error
dirname: missing operand
Try 'dirname --help' for more information.
  GEN     ./Makefile
scripts/kconfig/conf --silentoldconfig Kconfig
  CHK     include/config.h
  UPD     include/config.h
  GEN     include/autoconf.mk
  GEN     include/autoconf.mk.dep
**ccache: error: execv of /home/kevinc/khadas/fenix/build/toolchains/gcc-linaro-aarch64-none-elf/bin/aarch64-none-elf-gcc failed: Exec format error**
ccache: error: execv of /home/kevinc/khadas/fenix/build/toolchains/gcc-linaro-aarch64-none-elf/bin/aarch64-none-elf-gcc failed: Exec format error
../scripts/Makefile.autoconf:64: recipe for target 'include/autoconf.mk' failed
make[4]: *** [include/autoconf.mk] Error 1
make[4]: *** Waiting for unfinished jobs....
../scripts/Makefile.autoconf:40: recipe for target 'include/autoconf.mk.dep' failed
make[4]: *** [include/autoconf.mk.dep] Error 1
../Makefile:475: recipe for target 'silentoldconfig' failed
make[3]: *** [silentoldconfig] Error 1
make[2]: *** 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[1]: *** [sub-make] Error 2
make[1]: Leaving directory '/home/kevinc/khadas/fenix/build/u-boot'
Makefile:30: recipe for target 'uboot' failed
make: *** [uboot] Error 2
kevinc@DESKTOP-36FM0U6:~/khadas/fenix$
kevinc@DESKTOP-36FM0U6:~/khadas/fenix$
kevinc@DESKTOP-36FM0U6:~/khadas/fenix$
kevinc@DESKTOP-36FM0U6:~/khadas/fenix$ cd build/toolchains/
kevinc@DESKTOP-36FM0U6:~/khadas/fenix/build/toolchains$ ll
total 0
drwxr-xr-x 1 kevinc kevinc 4096 May 23 19:24 ./
drwxr-xr-x 1 kevinc kevinc 4096 May 23 19:29 ../
lrwxrwxrwx 1 kevinc kevinc   46 May 23 19:10 gcc-arm-aarch64-none-linux-gnu -> ../gcc-arm-aarch64-none-linux-gnu-10.3-2021.07/
lrwxrwxrwx 1 kevinc kevinc   55 May 23 19:22 gcc-arm-aarch64-none-linux-gnu-mainline -> ../gcc-arm-aarch64-none-linux-gnu-mainline-11.2-2022.02/
lrwxrwxrwx 1 kevinc kevinc   39 May 23 18:39 gcc-linaro-aarch64-elf -> ../gcc-linaro-aarch64-elf-7.3.1-2018.05/
lrwxrwxrwx 1 kevinc kevinc   45 May 23 18:35 gcc-linaro-aarch64-linux-gnu -> ../gcc-linaro-aarch64-linux-gnu-7.3.1-2018.05/
lrwxrwxrwx 1 kevinc kevinc   42 May 23 18:36 gcc-linaro-aarch64-none-elf -> ../gcc-linaro-aarch64-none-elf-4.8-2013.11/
lrwxrwxrwx 1 kevinc kevinc   39 May 23 18:37 gcc-linaro-arm-none-eabi -> ../gcc-linaro-arm-none-eabi-4.8-2013.11/
lrwxrwxrwx 1 kevinc kevinc   33 May 23 19:24 gcc-riscv-none-embed -> ../gcc-riscv-none-embed-8.3.0-1.2/
kevinc@DESKTOP-36FM0U6:~/khadas/fenix/build/toolchains$ cd gcc-linaro-aarch64-none-elf/bin/
kevinc@DESKTOP-36FM0U6:~/khadas/fenix/build/toolchains/gcc-linaro-aarch64-none-elf/bin$ ll
total 17884
drwxr-xr-x 1 kevinc kevinc    4096 Nov 19  2013 ./
drwxr-xr-x 1 kevinc kevinc    4096 May 23 18:36 ../
-rwxr-xr-x 1 kevinc kevinc  735704 Nov 19  2013 aarch64-none-elf-addr2line*
-rwxr-xr-x 2 kevinc kevinc  760252 Nov 19  2013 aarch64-none-elf-ar*
-rwxr-xr-x 2 kevinc kevinc 1109188 Nov 19  2013 aarch64-none-elf-as*
lrwxrwxrwx 1 kevinc kevinc      20 Nov 19  2013 aarch64-none-elf-c++ -> aarch64-none-elf-g++*
-rwxr-xr-x 1 kevinc kevinc  732056 Nov 19  2013 aarch64-none-elf-c++filt*
-rwxr-xr-x 1 kevinc kevinc  593656 Nov 19  2013 aarch64-none-elf-cpp*
-rw-r--r-- 1 kevinc kevinc    2861 Nov 19  2013 aarch64-none-elf-ct-ng.config
-rwxr-xr-x 1 kevinc kevinc   51316 Nov 19  2013 aarch64-none-elf-elfedit*
-rwxr-xr-x 1 kevinc kevinc  595000 Nov 19  2013 aarch64-none-elf-g++*
lrwxrwxrwx 1 kevinc kevinc      26 Nov 19  2013 aarch64-none-elf-gcc -> aarch64-none-elf-gcc-4.8.3*
-rwxr-xr-x 1 kevinc kevinc  592216 Nov 19  2013 aarch64-none-elf-gcc-4.8.3*
-rwxr-xr-x 1 kevinc kevinc   20988 Nov 19  2013 aarch64-none-elf-gcc-ar*
-rwxr-xr-x 1 kevinc kevinc   20924 Nov 19  2013 aarch64-none-elf-gcc-nm*
-rwxr-xr-x 1 kevinc kevinc   20924 Nov 19  2013 aarch64-none-elf-gcc-ranlib*
-rwxr-xr-x 1 kevinc kevinc  264300 Nov 19  2013 aarch64-none-elf-gcov*
-rwxr-xr-x 1 kevinc kevinc 3843912 Nov 19  2013 aarch64-none-elf-gdb*
-rwxr-xr-x 1 kevinc kevinc  595480 Nov 19  2013 aarch64-none-elf-gfortran*
-rwxr-xr-x 1 kevinc kevinc  795672 Nov 19  2013 aarch64-none-elf-gprof*
lrwxrwxrwx 1 kevinc kevinc      23 Nov 19  2013 aarch64-none-elf-ld -> aarch64-none-elf-ld.bfd*
-rwxr-xr-x 3 kevinc kevinc 1060932 Nov 19  2013 aarch64-none-elf-ld.bfd*
-rwxr-xr-x 2 kevinc kevinc  744248 Nov 19  2013 aarch64-none-elf-nm*
-rwxr-xr-x 2 kevinc kevinc  890008 Nov 19  2013 aarch64-none-elf-objcopy*
-rwxr-xr-x 2 kevinc kevinc 1223800 Nov 19  2013 aarch64-none-elf-objdump*
-rwxr-xr-x 1 kevinc kevinc     417 Nov 18  2013 aarch64-none-elf-pkg-config*
-rwxr-xr-x 1 kevinc kevinc   90252 Nov 19  2013 aarch64-none-elf-pkg-config-real*
-rwxr-xr-x 2 kevinc kevinc  760252 Nov 19  2013 aarch64-none-elf-ranlib*
-rwxr-xr-x 1 kevinc kevinc  391100 Nov 19  2013 aarch64-none-elf-readelf*
-rwxr-xr-x 1 kevinc kevinc  735672 Nov 19  2013 aarch64-none-elf-size*
-rwxr-xr-x 1 kevinc kevinc  735640 Nov 19  2013 aarch64-none-elf-strings*
-rwxr-xr-x 2 kevinc kevinc  890008 Nov 19  2013 aarch64-none-elf-strip*

编译环境

kevinc@DESKTOP-36FM0U6:~/khadas/fenix/build/toolchains/gcc-linaro-aarch64-none-elf/bin$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:        18.04
Codename:       bionic
kevinc@DESKTOP-36FM0U6:~/khadas/fenix/build/toolchains/gcc-linaro-aarch64-none-elf/bin$

配置环境

== ENV CONFIG =======================
VERSION=1.5
KHADAS_BOARD=VIM3L
LINUX=4.9
UBOOT=2015.01
DISTRIBUTION=Ubuntu
DISTRIB_RELEASE=bionic
DISTRIB_RELEASE_VERSION=18.04
DISTRIB_TYPE=minimal
DISTRIB_ARCH=arm64
INSTALL_TYPE=SD-USB
COMPRESS_IMAGE=no

== ONE LINE CONFIG ==================
source setenv.sh -q -s  KHADAS_BOARD=VIM3L LINUX=4.9 UBOOT=2015.01 DISTRIBUTION=Ubuntu DISTRIB_RELEASE=bionic DISTRIB_RELEASE_VERSION=18.04 DISTRIB_TYPE=minimal DISTRIB_ARCH=arm64 INSTALL_TYPE=SD-USB COMPRESS_IMAGE=no

End of the environment setup.

重新选择分支 u-boot-mainline-v2021.04,编译成功了。

kevinc@DESKTOP-36FM0U6:~/khadas/fenix$ make uboot
[i] FENIX (scripts/build.sh) BUILD: /home/kevinc/khadas/fenix/build | DL: /home/kevinc/khadas/fenix/downloads | sudo: sudo -E
Info: Build host: bionic target: bionic
Info: Running in container: wsl
Info: apt-cacher is disabled in containers.
[i] check python -> Python 2.7.17
[i] check python2 -> Python 2.7.17
make[1]: Entering directory '/home/kevinc/khadas/fenix/build/u-boot-mainline-v2021.04'
kevinc@DESKTOP-36FM0U6:~/khadas/fenix/build/gcc-linaro-aarch64-none-elf-4.8-2013.11/bin$ file aarch64-none-elf-gcc-4.8.3
aarch64-none-elf-gcc-4.8.3: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.15, stripped

这个gcc是32bit的

sudo apt-get install libc6:i386
sudo apt-get install lib32ncurses5
sudo apt-get install lib32z1

安装32b库,还是不行。

Hello @kevinchase

试试这样呢?

$ NO_CCACHE=yes make

这样会出现Syntax error和Exec format error。 @numbqq

make[1]: Leaving directory '/home/kevinc/khadas/fenix/build/u-boot'
make[1]: Entering directory '/home/kevinc/khadas/fenix/build/u-boot'
/home/kevinc/khadas/fenix/build/toolchains/gcc-linaro-aarch64-none-elf/bin/aarch64-none-elf-gcc: 1: /home/kevinc/khadas/fenix/build/toolchains/gcc-linaro-aarch64-none-elf/bin/aarch64-none-elf-gcc: Syntax error: "(" unexpected
/bin/sh: 1: aarch64-none-elf-gcc: Exec format error
dirname: missing operand
Try 'dirname --help' for more information.
  GEN     ./Makefile
scripts/kconfig/conf --silentoldconfig Kconfig
  CHK     include/config.h
  UPD     include/config.h
  GEN     include/autoconf.mk
  GEN     include/autoconf.mk.dep
/bin/sh: 1: aarch64-none-elf-gcc: Exec format error
/bin/sh: 1: aarch64-none-elf-gcc: Exec format error
../scripts/Makefile.autoconf:64: recipe for target 'include/autoconf.mk' failed
make[4]: *** [include/autoconf.mk] Error 1
make[4]: *** Waiting for unfinished jobs....
../scripts/Makefile.autoconf:40: recipe for target 'include/autoconf.mk.dep' failed
make[4]: *** [include/autoconf.mk.dep] Error 1
../Makefile:475: recipe for target 'silentoldconfig' failed
make[3]: *** [silentoldconfig] Error 1
make[2]: *** 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[1]: *** [sub-make] Error 2
make[1]: Leaving directory '/home/kevinc/khadas/fenix/build/u-boot'
Makefile:30: recipe for target 'uboot' failed
make: *** [uboot] Error 2
kevinc@DESKTOP-36FM0U6:~/khadas/fenix$

解决Exec format error:
在WSL中运行32位程序 - lbz007 - 博客园 (cnblogs.com)

新报错:
aarch64-none-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory
aarch64-none-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory
../scripts/Makefile.autoconf:64: recipe for target 'include/autoconf.mk' failed

cc1就在该目录下,权限也对,为什么提示找不到? @numbqq

kevinc@DESKTOP-Q19S0O9:~/khadas/fenix$ find build/ -name cc1
build/gcc-arm-aarch64-none-linux-gnu-10.3-2021.07/libexec/gcc/aarch64-none-linux-gnu/10.3.1/cc1
build/gcc-arm-aarch64-none-linux-gnu-mainline-11.2-2022.02/libexec/gcc/aarch64-none-linux-gnu/11.2.1/cc1
build/gcc-linaro-aarch64-elf-7.3.1-2018.05/libexec/gcc/aarch64-elf/7.3.1/cc1
build/gcc-linaro-aarch64-linux-gnu-7.3.1-2018.05/libexec/gcc/aarch64-linux-gnu/7.3.1/cc1
**build/gcc-linaro-aarch64-none-elf-4.8-2013.11/libexec/gcc/aarch64-none-elf/4.8.3/cc1**
build/gcc-linaro-arm-none-eabi-4.8-2013.11/libexec/gcc/arm-none-eabi/4.8.3/cc1
build/gcc-riscv-none-embed-8.3.0-1.2/libexec/gcc/riscv-none-embed/8.3.0/cc1
kevinc@DESKTOP-Q19S0O9:~/khadas/fenix$
kevinc@DESKTOP-Q19S0O9:~/khadas/fenix$ ls -l build/gcc-linaro-aarch64-none-elf-4.8-2013.11/libexec/gcc/aarch64-none-elf/4.8.3/cc1
-rwxr-xr-x 1 kevinc kevinc 11517352 Nov 19  2013 build/gcc-linaro-aarch64-none-elf-4.8-2013.11/libexec/gcc/aarch64-none-elf/4.8.3/cc1
kevinc@DESKTOP-Q19S0O9:~/khadas/fenix$

过程捋一下:

编译环境:Windows WSL Ubuntu18.04

PS C:\Windows\system32> wsl -l -v
  NAME            STATE           VERSION
Ubuntu-18.04    Running         1
PS C:\Windows\system32>
和
kevinc@DESKTOP-Q19S0O9:~/khadas/fenix$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.6 LTS
Release:        18.04
Codename:       bionic
64位
kevinc@DESKTOP-Q19S0O9:~/khadas/fenix$ dpkg --print-architecture
amd64

直接运行make uboot,报错Exec format error

ccache: error: execv of /home/kevinc/khadas/fenix/build/toolchains/gcc-linaro-aarch64-none-elf/bin/aarch64-none-elf-gcc failed: Exec format error

网上说WSL不支持32位程序编译,但是可以运行编好的32b程序

添加32位架构支持,加相关库,使能格式

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install cpp-9:i386
sudo apt install gcc:i386
并
sudo apt update
sudo apt install qemu-user-static
sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic '\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff'
使能
sudo service binfmt-support start

最早的报错确实消失了,但是出现了新的报错:

aarch64-none-elf-gcc: error trying to exec 'cc1': execvp: No such file or directory

这个c编译器cc1,目录下是有的,权限正确。现在卡在这

Hello @kevinchase

目前暂不支持WSL编译,请使用Ubuntu虚拟机进行编译。

win10 VM虚拟机 ubuntu18.04 编译成功! @numbqq

Amlogic img found, use new FIP structure!
Creating “fip/_tmp/fip.bin”
Firmware Image Package ToC:

  • SCP Firmware BL3-0: offset=0x4000, size=0xD400
  • EL3 Runtime Firmware BL3-1: offset=0x14000, size=0x2B000
  • Non-Trusted Firmware BL3-3: offset=0x40000, size=0x11D750
    Bootloader build done!

Done.

Fri May 26 00:38:44 PDT 2023