Linux 下提示 “xxx:找不到命令” 解决方法

2011年08月28日   系统专区   0条评论   8067人围观过  
  实际这个不是问题,因为这个提示 “xxx:找不到命令” 不是 Linux 故障或是出错造成的,很多时候是由于缺少了这个命令,才这样提示的。所以这里写这篇文章,主要是想说明一下,如何将编译好的文件放到合适的路径下,然后下次使用该命令才可以直接操作。

  提示中的 “xxx” 就是各种不同的 Linux 命令。我们这里以编译 Linux 环境下打包 system 目录为 system.img 文件的命令 “mkyaffs2image” 为例,来介绍一下如何下载、编译、使用一个命令。

  首先我们引入一个操作步骤,这个是打包工具 “mkyaffs2image” 的下载、编译、打包全过程:


3)重新给文件打包
当修改完了system目录下的文件后,我们就可以重新生成一个新的system.img文件了。
这时,要使用命令mkyaffs2image。这个命令也要自己编译的。
首先去http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs2/下载全部源程序
此页面有“Download GNU tarball”,点击可下载全部。
下载完成后,到源程序所在目录的utils子目录,运行make
运行完成后,就可以见到有mkyaffs2image命令了。
注意,你可以直接把旧的system.img文件删除,然后运行 mkyaffs2image system system.img
这样,就生成了新的system.img文件了。


  虽然上面写着看见有mkyaffs2image命令了,但是你在终端中运行 “mkyaffs2image system system.img”,同样是会报错的,提示的就是 “mkyaffs2image:找不到命令”。

  实际上这里提示这个错误不是说你编译失败,而是这个命令虽然有了,但是直接使用的话系统是调用不到的,需要引入该命令的路径。

  这个十分像 Windows 下在运行窗口中输入某个命令来启动相应程序一样,例如你输入 “cmd”,就启动了命令提示符窗口,但是为什么直接输入就可以呢,因为在系统的 system32 目录下,已经存在了 “cmd.exe” 这个程序,直接输入 “cmd”,系统就会在 system32 目录下找。同时也仅仅是会在这个目录下找,放在其他目录下,你就得加路径。或者是你自己写的一个程序,如果要在运行窗口直接输入程序文件名就能运行,那么你也必须直接放在这个 “system32” 目录下。

  同理,Linux 下也是一样,某些命令直接输入就能直接执行,那是在 “/usr/bin” 目录下已经有了这个命令。

  所以,这下就明白了。在执行完编译后,你需要将编译好的命令拷贝到 “/usr/bin” 目录下,同时再赋予一定的权限,就可以了:

cp mkyaffs2image /usr/bin/
chmod 777 /usr/bin/mkyaffs2image


  此时你再执行 “mkyaffs2image system system.img” 命令打包,就正常了。

  这里顺便再提一下,《Git 和 Repo 入门:如何取得 Android 源代码》一文中说的,第三步如果想直接使用 “repo” 命令而不是需要加上路径,则也是同理,将其拷贝到 “/usr/bin” 目录下,按照第二步的方法给其设置权限,就可以直接使用了。
关键字: Linux,找不到命令

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。