Docker Ubuntu 20.04执行CI任务交叉编译riscv64-linux-gcc时no such file or directory

  1. 第一次接触rsicv64的交叉编译环境(其他交叉编译环境也基本没接触过,只是知道概念和原理),目前的需求是需要在gitlab上给一套rsicv64-linux-gcc执行CI任务,默认直接在本地服务器执行交叉编译,需要经常清理服务器文件,且成熟的开发环境不适合作为测试环境来运行,因此考虑将CI任务直接在Docker中执行,也需要配置最小化且测试环境最干净的Docker镜像。
  2. 手工在服务器执行,全套流程都是成功的,没有任何问题,但是放到ubuntu 20.04的docker中执行就全失败了,各种依赖库根据报错都逐个安装并解决了,最后所有的任务开始,编译进行到一半退出了,一直提示riscv64-linux-gcc可执行文件no such file or directory

Debug流程:

  1. 首先在CI任务的after_script中逐个ls显示riscv64-linux-gcc的完整目录和文件,发现所有文件都存在,但是不能执行,在本地服务器中手工执行riscv64-linux-gcc -v是没问题的,基本说明这是docker中的编译环境问题导致,但是目前哪个环境导致的问题还非常不明确
  2. $ ls -alht /builds/xxx/xxx_buildroot/buildroot-2020.02.11/../toolchain/nds64le-linux-glibc-v5d/bin/riscv64-linux-gcc
    -rwxrwxrwx 1 1000 1000 98K Dec  3  2019 /builds/xxx/xxx_buildroot/buildroot-2020.02.11/../toolchain/nds64le-linux-glibc-v5d/bin/riscv64-linux-gcc
    $ /builds/xxx/xxx_buildroot/buildroot-2020.02.11/../toolchain/nds64le-linux-glibc-v5d/bin/riscv64-linux-gcc --help
    /bin/bash: line 128: /builds/xxx/xxx_buildroot/buildroot-2020.02.11/../toolchain/nds64le-linux-glibc-v5d/bin/riscv64-linux-gcc: No such file or director

     

  3. docker使用的是最新的ubuntu 20.04,服务器是ubuntu 18.04,尝试把docker版本回退至18.04,问题依旧
  4. 仔细查看riscv64-linux-gcc整个目录和上级所有文件权限,用户,用户组,发现docker默认是root用户登录了,而root的ui

你可能感兴趣的:(Docker Ubuntu 20.04执行CI任务交叉编译riscv64-linux-gcc时no such file or directory)