日期:2014-05-16  浏览次数:20739 次

Linux可执行文件引申的烦恼

项目中有时候碰到一些小问题特别烦恼,这些问题不起眼,但如鲠在喉,不弄清楚让人很不舒服。

今天在项目中有些问题想要手动创建一个android工程,于是百度手动创建(即命令行创建)的方法:

$ android create ....

但是提示找不到android命令。因此这里有一个小烦恼:为什么找不到android命令?

而我的android sdk配置是正常的,而且可以正常使用adb命令。这可能是环境变量配置的问题:

export PATH=$PATH:/home/sean/android-sdk-linux_86/platform-tools

安卓sdk的工具分别存放在/tools和/platform-tools文件夹下:

我发现这些工具,即这些可执行文件首先在图标上可以清楚的看出来是两种。查看内容发现android这个是sh文件,adb是ELF文件(这涉及到linux文件格式,具体可以百度,时间关系,不作深究),我们用sh文件的执行方式就可以轻松执行android命令。因此关于android这个命令的烦恼得到解决:1.环境变量设置即可全局执行。2.需要使用shell文件的执行方法:sh android create...

但是又有了新的烦恼,如同adb这种图标的文件是什么文件?linux的可执行文件有哪些?同时为什么/platforms下的adb可以执行,而/tools下的dmtracedump等却不可以执行?打开如下图内容显示有颜色差异的原因是什么?


这里引申出来的是ELF文件的执行,因为我发现adb可以执行,而dmtracedump依然不可以执行,提示找不到dmtracedump命令。用vim分别打开adb和dmtracedump发现开头部分:

adb:                                                                                                                                                                                                                             dmtracedump:

     


猜想可能是未曾安装dmtracedump真正的执行内容,这可能涉及到ELF可执行文件的格式问题。

这个引申的烦恼涉及到ELF文件格式,期待大神帮忙。。。