为了构建我的主板的 u-boot,我遵循了以下两个命令:
$ sudo make nanopi_h3_defconfig ARCH=arm CROSS_COMPILE=arm-linux-
$ sudo make ARCH=arm CROSS_COMPILE=arm-linux-
我从第一个命令得到了结果:配置写入.config 这意味着成功。但从第二个命令得到以下内容:
make: arm-linux-gcc: No such file or directory
/bin/sh: 1: arm-linux-gcc: not found
dirname: missing operand
Try 'dirname --help' for more information.
scripts/kconfig/conf --silentoldconfig Kconfig
./scripts/binutils-version.sh: line 18: arm-linux-as: command not found
CHK include/config.h
CFG u-boot.cfg
/bin/sh: 1: arm-linux-gcc: not found
make[1]: *** [scripts/Makefile.autoconf:79: u-boot.cfg] Error 1
make: *** No rule to make target 'include/config/auto.conf', needed by 'include/config/uboot.release'. Stop.
似乎来自arm-linux-gcc的麻烦,但我运行了命令“arm-linux-gcc”,它有效。那么,为什么第一个命令可以通过arm-linux-gcc,而第二个命令却失败了呢?
答案1
我猜问题是你的 ARM 工具链安装在不在root
s上的某个地方PATH
;由于您正在使用 进行构建sudo
,因此无法找到编译器。
要解决此问题,请恢复构建树中所有文件的正确所有权:
sudo chown -R $USER .
(sudo
此处是必需的,因为您不拥有所有文件。)
现在运行构建没有 sudo
:
make ARCH=arm CROSS_COMPILE=arm-linux-
内核构建中唯一需要运行的部分是root
安装阶段;由于您正在进行交叉编译,因此您不需要在构建系统上执行此操作(您可能会将构建的内核和模块复制到另一个设备,并将它们安装在那里)。