This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

linux的一个疑惑



我使用sudo -i 进入root权限

在dvr rdk包下 运行make -s sys_all ,直接报出两个错误 什么echo命令未找到

而退出root权限 运行make -s sys_all,就可以一直编译下去

这是为何啊

  •    将-s编译选项去掉试一下,使用make sys_all, 实在不行,建议你重新解压一个干净的RDK包,然后用sudo chmod -R 777 将整个RDK的目录给于权限,再尝试 make sys_all, 另外请附上log日志。

    Regards,

    Louis

  • zwh,你好!

    请问你的问题解决了吗?我也遇到了和你一样的问题。

  • 我的log如下:

    comeback@comeback:~/DVRRDK_03.00.00.00/dvr_rdk$ sudo make sys_all
    make -fMAKEFILE.MK -C/home/comeback/DVRRDK_03.00.00.00/dvr_rdk/../dvr_rdk/mcfw/src_linux clean
    make[1]: 正在进入目录 `/home/comeback/DVRRDK_03.00.00.00/dvr_rdk/mcfw/src_linux'
    make -fMAKEFILE.MK libs TARGET=clean
    make[2]: 正在进入目录 `/home/comeback/DVRRDK_03.00.00.00/dvr_rdk/mcfw/src_linux'
    make -C/home/comeback/DVRRDK_03.00.00.00/dvr_rdk/../dvr_rdk/mcfw/src_linux/osa_kermod/build clean
    make[3]: 正在进入目录 `/home/comeback/DVRRDK_03.00.00.00/dvr_rdk/mcfw/src_linux/osa_kermod/build'
    make[3]: echo:命令未找到
    make[3]: *** [clean] 错误 127
    make[3]:正在离开目录 `/home/comeback/DVRRDK_03.00.00.00/dvr_rdk/mcfw/src_linux/osa_kermod/build'
    make[2]: *** [osa] 错误 2
    make[2]:正在离开目录 `/home/comeback/DVRRDK_03.00.00.00/dvr_rdk/mcfw/src_linux'
    make[1]: *** [clean] 错误 2
    make[1]:正在离开目录 `/home/comeback/DVRRDK_03.00.00.00/dvr_rdk/mcfw/src_linux'
    make: *** [dvr_rdk_linux_clean] 错误 2

    comeback@comeback:~/DVRRDK_03.00.00.00/dvr_rdk$

  • 交叉编译工具配了没?检查一下Rules.make

  • 你echo $PATH看看 有没arm gcc

  • 交叉编译器我安装了,路径就按照Rules.make设置的。如果我以普通用户身份执行make sys_all,那么能够开始编译,但到最后的时候会出现编译错误。如果我用root用户的身份去执行编译命令,那就出现上面所列的错误,根本无法开始编译。

    后来我又用同事的系统(Ubuntu 12.04),重新解压DVRRDK压缩包,安装交叉编译器,出现的情况和我正好相反。这时候用root身份能够编译直至完成,用普通用户身份执行编译命令,出现的错误和我上面的一样。

  • 你自己的系统 普通用户下执行su 再进行make sys_all

    你试试

  • 可能是权限的问题,有没有试过使用root用户进行解压和编译?

  • 我用root用户解压和编译,出现的问题还是一样,不能开始编译。我打算重新安装一下系统再试试看。

  • 我终于找到了不能编译的原因:环境变量设置的问题。

    我直行了sudo -s,切换到root用户之后,修改了.bashrc文件,在其中修改了环境变量:

    export PATH="$PATH:/home/wchunyang/DVRRDK_03.00.00.00/ti_tools/cgt_a8/arm-2009q1/bin"

    然后再执行

    source .bashrc

    这样就可以编译了。

    前面出错时,我也修改了环境变量,修改方式如下:

    export PATH="/home/wchunyang/DVRRDK_03.00.00.00/ti_tools/cgt_a8/arm-2009q1/bin:$PATH"

    和前面相比,也就是$PATH位置的不同。

    于是新的问题出来了,后一种修改方式为什么不对?

  • 每个用户都有自己的PATH。你在root用户和普通用户下 分别echo看一下就知道了

    出错时 你修改的PATH只是针对普通用户的吧?

    建议你在/etc/profile里添加PATH 这个是针对全局的 任何用户都从这里继承

  • 我觉得倒不是用户的区别。因为前后我都是在同一个地方修改,区别仅在于$PATH所放的位置不同。

  • 你看下当前环境变量是什么不就知道了。。

    而且每个用户都有自己的.bashrc  谁知道你修改的是哪个。。

    反正你出错的时候 就是当然PATH里没有 armgcc存在的路径  有了就不会出错了。你既然以及可以编译了 不明白你什么意思

  • 我又看了下你前面的 

    comeback@comeback:~/DVRRDK_03.00.00.00/dvr_rdk$ sudo make sys_all

    既然执行sudo 就是切换到root权限和环境 去执行命令,而root环境没有配置 所以导致出错吧

    我推荐你使用su命令,也就是在comeback下 执行su后 切换到root权限但环境仍保留之前的

  • 我可以肯定我修改的是comeback用户主目录下的.bashrc,而且不能编译的时候我也用echo $PATH看过,有编译器的路径在里面。现在的问题是,修改同一个.bashrc文件,只是$PATH放置的前后顺序不一样,就会导致不能编译的情况出现,这让我难以理解。另外,Ubuntu 12.04下面,我执行su,然后输入密码,会提示认证失败,所以我才用sudo -s这个命令。

  • comeback@comeback:~/DVRRDK_03.00.00.00/dvr_rdk$ sudo make sys_all

    配置comeback的PATH 但是sudo的话PATH会变得吧 ,可能问题出在这里?? 

    不使用sudo 应该可以编译 如果echo有看到路径,如果编译过程中出现rm,cp等命令不够权限 可以把整个dvrrdk包改成对comeback有 w权限

    su的话 认证失败说明没设密码。设下密码就行了

  • 好的,zwh。谢谢你的解答。