海思平台在ubuntu系统中安装交叉编译工具后编译遇到的问题解决

曾经在使用hi3559的片子的时候,安装按照海思提供的文档安装工具链,在编译sdk的时候会出现问题:/bin/sh: arm-hisiv600-linux-gcc: command not found。然后通过改变当前用户到root用户的方法暂时解决了(https://blog.csdn.net/u010299133/article/details/90730769),但是现在使用海思hi3559a片子的时候,还是会出现同样的问题。并且通过改变当前用户到root用户的方法实在太过与麻烦。

按照海思提供的文档安装cross-compilier后,查看  /etc/profile中的内容一切正常:

海思平台在ubuntu系统中安装交叉编译工具后编译遇到的问题解决_第1张图片

在终端查看交叉编译工具:显示的正常

xyw2018@ubuntu:aarch64-himix100-linux$ aarch64-himix100-linux-gcc -v
Using built-in specs.
COLLECT_GCC=aarch64-himix100-linux-gcc
COLLECT_LTO_WRAPPER=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../libexec/gcc/aarch64-linux-gnu/6.3.0/lto-wrapper
Target: aarch64-linux-gnu
Configured with: /home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/src/gcc-6.3.0/configure --build=i386-redhat-linux --host=i386-redhat-linux --target=aarch64-linux-gnu --with-arch=armv8-a --prefix=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install --with-specs='%{!ftree-coalesce-vars:-fno-tree-coalesce-vars}' --disable-libmudflap --disable-libssp --enable-gold=yes --disable-libstdcxx-pch --disable-multilib --enable-multiarch --with-gnu-as --with-gnu-ld --enable-libgomp --enable-gnu-indirect-function --enable-checking=yes --enable-lto --enable-c99 --enable-long-long --disable-nls --enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419 --enable-shared --with-pkgversion='HC&C V100R002C00B027_20181107' --enable-languages=c,c++ --with-headers=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/target/usr/include --with-sysroot=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/target --with-build-sysroot=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/target --with-gmp=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/obj/host-libs/usr --with-mpfr=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/obj/host-libs/usr --with-mpc=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/obj/host-libs/usr --with-cloog=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/obj/host-libs/usr --with-build-time-tools=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/aarch64-linux-gnu/bin --libdir=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/lib
Thread model: posix
gcc version 6.3.0 (HC&C V100R002C00B027_20181107)

但是在终端是用sudo make的时候一直会爆出:make: aarch64-himix100-linux-gcc: Command not found

一般情况下,只要在/etc/profile中添加了环境变量后,不管实在那个用户目录下,都应该是生效的才对。

使用之前在hi3559上的解决方法,先sudo -s到root用户,然后使用export添加环境变量,再编译是可行的。

通过可知当终端打开的时候,会执行~/.bashrc中的内容,所以在这个文件的末尾加上source /etc/profile:

这样操作之后,每次sudo -s后都不需要手动export添加路径了,可以直接make。但是在自己用户目录下执行sudo make,还是会报出错误make: aarch64-himix100-linux-gcc: Command not found。这始终是个问题。不过通过这个现象也可以发现当执行sudo -s后以及打开终端的时候都会去执行~/.bashrc脚本中的内容。

通过参考(https://blog.csdn.net/ws379374000/article/details/78743928)发现当我们在root目录下的时候使用的root的环境变量,但是执行sudo的时候使用的环境变量是当前用户的环境变量。通过查看当前的环境变量:echo $PATH.相应的路径是存在的。所以很郁闷。

现在在/etc/environment中同样添加了相应的路径,这个问题依旧无法解决。

参考(https://www.linuxidc.com/Linux/2014-09/106076.htm)可以发现在sudo 执行使用的环境变量是/etc/sudores中的secure_path环境变量。

依据上述的描述,在终端中执行:sudo visudo 将交叉编译工具连的路径增加到secure_path中。

然后继续在当前用户下执行sudo make 编译正常!!!!!!!!!!!!!!!!!!!!!

你可能感兴趣的:(Ubuntu使用,Hi3559V100,hi3559av100)