在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交叉编译器所在路径