我正在运行 Ubuntu 22.04,在为另一块硬件编译 NXP 驱动程序后,几乎所有命令都无法运行。任何包含“sudo”或“ls”的命令都会返回以下内容并且不会执行:
aarch64-binfmt-P: Could not open '/lib/ld-linux-aarch64.so.1': No such file or directory
我手动重启了系统,但还是出现同样的错误。这台机器是不是基本上坏了?我无法使用 sudo 安装任何补丁,所以似乎卡住了。
评论中的注释:
$ echo $PATH
/home/cwade/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
$
$
$ type sudo
sudo is /home/cwade/bin/sudo
/bin/ls
有效。它返回 处的所有文件/home/user
。
答案1
您的 PATH 是正常的,但不知何故您的交叉编译工具被放入了您的 ${HOME}/bin 中,这通常在 PATH 中很靠前的位置。正常的设置是将这些交叉工具隔离在它们自己的位置(我更喜欢这种方式,而不是转储它们,尽管使用它们的全名以避免与系统区域混淆)。下面是为交叉开发定义一些环境变量的设置示例。
MY_ARM_BASE=${HOME}/dev/toolchain/arm-2008q3
C_INCLUDE_PATH=${MY_ARM_BASE}/lib/gcc/arm-none-linux-gnueabi/4.3.2/include:${MY_ARM_BASE}/lib/gcc/arm-none-linux-gnueabi/4.3.2/include-fixed
LIBRARY_PATH=${MY_ARM_BASE}/arm-none-linux-gnueabi/libc/lib:${MY_ARM_BASE}/arm-none-linux-gnueabi/libc/usr/lib
CPLUS_INCLUDE_PATH=${MY_ARM_BASE}/arm-none-linux-gnueabi/include/c++/4.3.2
#OBJC_INCLUDE_PATH
COMPILER_PATH=${MY_ARM_BASE}/bin
#LD_RUN_PATH
#GPROF_PATH
#######
CC=${COMPILER_PATH}/gcc
CXX=${COMPILER_PATH}/g++
RANLIB=${COMPILER_PATH}/ranlib
STRIP=${COMPILER_PATH}/strip
export C_INCLUDE_PATH LIBRARY_PATH CPLUS_INCLUDE_PATH COMPILER_PATH
export CC CXX RANLIB STRIP