在ubuntu20.04上已经将aarch64-linux-gnu-gcc交叉编译器所在路径配置到了$PATH环境变量中,/etc/profile文件、用户.bashrc文件、/root/.bashrc文件都已经包含了aarch64-linux-gnu-gcc交叉编译器所在路径,配置方式为:

export PATH=$PATH:/gcc_path

所有需要安装的第三方库都已经安装了,比如

sudo apt-get install libncurses5-dev libncursesw5-dev

sudo apt-get install lib32stdc++6 lib32z1

sudo apt-get install ia32-libs

ubuntu20.04中也安装了32位兼容库:

sudo dpkg --add-architecture i386
sudo apt install libc6:i386 libstdc++6:i386
sudo apt-get update
sudo apt install libncurses5-dev lib32z1

也安装了以下库

sudo apt-get install build-essential

sudo apt install binutils

执行make的时候,是OK的,但是执行sudo make modules_install时,还是提示如下问题:

aarch64-linux-gnu-gcc command not found

在当前用户执行echo $PATH,可以看到aarch64-linux-gnu-gcc交叉编译器所在路径配置到了$PATH环境变量中

在root用户中执行echo $PATH,也看到aarch64-linux-gnu-gcc交叉编译器所在路径配置到了$PATH环境变量中

再次执行sudo make modules_install,仍然提示:

aarch64-linux-gnu-gcc command not found

最后,参考以下文章:

Linux教程分享:如何为sudo命令定义PATH环境变量_Linux教程_Linux公社-Linux系统门户网站

当你使用sudo去执行一个程序时,处于安全的考虑,这个程序将在一个新的、最小化的环境中执行,也就是说,诸如PATH这样的环境变量,在sudo命令下已经被重置成默认状态了。所以当一个刚初始化的PATH变量中不包含你所要运行的程序所在的目录,用sudo去执行,你就会得到"command not found"的错误提示。

要想改变PATH在sudo会话中的初始值,用文本编辑器打开/etc/sudoers文件,找到"secure_path"一行,当你执行sudo 命令时,"secure_path"中包含的路径将被当做默认PATH变量使用。

添加所需要的路径(如aarch64-linux-gnu-gcc交叉编译器所在路径)到"secure_path"下,在开篇所遇见的问题就将迎刃而解。
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:aarch64-linux-gnu-gcc交叉编译器所在路径

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐