前言
 
在编译xilinx的uboot的时候出现了一个问题,始终报错:“strip: Unable to recognise the format of the input file `gen_eth_addr'”
 
1 分析
 
一般对于编译链接命令出现这样的错误,都是因为目标文件和命令的编译环境不一样导致的,但是我看了一下对于这个目标文件gen_eth_addr,使用的gcc进行编译的啊,为什么strip就不会认识呢?
在第一反应中,gcc/strip都应该是使用的系统安装是/usr/bin中指定的命令,对于这两个命令的环境应该是一样的,所以我多次尝试都不对,所以我觉得肯定是bash在调用gcc/strip命令时路径出现了问题。
使用type命令查看gcc和strip使用的路径:

root@~:type gcc

gcc is /usr/bin/gcc
root@~:type strip
strip is /home/timesys/linux-gnu/toolchain/bin/strip
果然gcc/strip使用的不是同一个编译环境,问题就处在这里,下面就是找为什么会这样和解决问题了。
查看环境变量看指定的PATH路径:
在这里我们果然看到一个问题:/usr/../bin等并不是在PATH的最前面,而我们知道shell执行命令的顺序是:shell内建命令-->外部命令(外部命令查找本地目录-->PATH指定的路径),而PATH指定的路径下越靠前的优先级越高。
所以这里我们看到/home/timesys/linux-gnu/toolchain/bin比/usr/bin/靠前,而且/home/timesys/linux-gnu/toolchain/bin中有strip命令,所以就被执行了。
 
由此,问题原因找到,就是由于PATH中的顺序导致的查找命令混乱,下面就是修改PATH的值了。
 
2 解决
 
PATH是属于环境变量,我们直接跟踪bash使用的脚本一步一步查找即可。
首先,bash启动时调用的文件是~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
 
# User specific environment and startup programs
 
PATH=$HOME/bin :$PATH
 
export PATH
unset USERNAME
 
# New environment setting added by Sourcery CodeBench Lite for Xilinx GNU/Linux on Fri Feb 27 14:52:15 CST 2015 1.
# The unmodified version of this file is saved in /root/.bash_profile1216857457.
# Do NOT modify these lines; they are used to uninstall.
PATH="/home/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin:${PATH}" 
export PATH
# End comments by InstallAnywhere on Fri Feb 27 14:52:15 CST 2015 1.
 
# For Mips GNU/Linux
PATH="/home/timesys/linux-gnu/toolchain/bin:/home/timesys/linux-uclibc/toolchain/bin:${PATH}" 
export PATH
我们将${PATH}均放到最前面,如下;
然后这里还调用了~/.bashrc,我们也去看一下:
这里引用了/etc/bashrc,也去看一下:
 
确保这里所有的PATH都是这样${PATH}在前面。
再看/etc/profile
在这个文件中出现的PATH也要改成统一的格式。
 
修改完这些文件,然后source,然后再看PATH的值:
OK,这就是我们需要的了,然后编译uboot顺利通过
 
3 总结
 
由于我这个虚拟机是前任装的,所以里面的一些配置不合符自己平时的习惯,所以导致了一些开始认为不应该出现的问题;但出现了问题就应该找到原因并解决。同时对于在一个虚拟机中安装多个交叉编译环境来说,我们在使用的时候一定要注意命令的调用路径,在配置PATH变量的时候遵循一定的规则,这样才能更好地避免出错

解决strip: Unable to recognise the format of the input file问题的更多相关文章

  1. Unable to handle 'index' format version '2', please update rosdistro的解决办法

    之前安装的ROS是Fuerte版本的,好久没有更新,不知不觉又出来了好几个新的版本,今天删除了Fuerte,计划安装Hydro版本的尝尝新,按照官网的安装流程,很快就可以把新版本安装上去了,但是在&q ...

  2. git提交代码出现错误fatal: Unable to create '项目路径/.git/index.lock': File exists.

    git提交代码出现错误fatal: Unable to create '项目路径/.git/index.lock': File exists. 具体出错代码如下: 具体原因不详,在stackoverf ...

  3. OCI runtime exec failed: exec failed: unable to start container process: exec: "mongo": executable file not found in $PATH: unknown

    前言: 今天按照以往在Docker安装MongoDB的方式安装,但是到最后使用mongo命令执行mongodb命令的时候一直执行不成功,最后还是按照官网的Issues解决了. 创建并运行一个Mongo ...

  4. 完美解决 nginx No input file specified.

    一次开发中遇到了这个问题:No input file specified nginx版本1.8 找遍网络都是说 fastcgi_param SCRIPT_FILENAME $document_root ...

  5. input[file]标签的accept=”image/*”属性响应很慢的解决办法

    转自:http://blog.csdn.net/lx583274568/article/details/52983693 input[file]标签的accept属性可用于指定上传文件的 MIME类型 ...

  6. 动态input file多文件上传到后台没反应的解决方法!!!

    其实我也不太清除具体是什么原因,但是后面就可以了!!! 我用的是springMVC 自带的文件上传 1.首先肯定是要有springMVC上传文件的相关配置! 2.前端 这是动态input file上传 ...

  7. 解决libcrypto.so.0.9.8: cannot open shared object file

    文章解决的问题:安装nginx中需要libmysql.so.16包的支持,下面介绍如何安装,并建立lib的连接. 问题展示:error while loading shared libraries: ...

  8. thinkphp使用模块/控制器/操作访问时出现No input file specified.解决方式

    thinkphp使用 http://serverName/index.php/模块/控制器/操作 访问时,出现了 No input file specified. 的错误 解决办法: 一: 开启cgi ...

  9. No input file specified的解决方法apache伪静态

    http://jingyan.baidu.com/article/dca1fa6f8d623ff1a44052e8.html (一)IIS Noinput file specified 方法一:改PH ...

随机推荐

  1. C#第七节课

    for嵌套 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System ...

  2. floyd求最小环 模板

    http://www.cnblogs.com/Yz81128/archive/2012/08/15/2640940.html 求最小环 floyd求最小环 2011-08-14 9:42 1 定义: ...

  3. 如何用PYTHON的CGIHTTPSERVER模块模拟POST请求?

    这次又要逼真一点点,可以弄POST请求啦. 在WEB根目录下新建cgi-bin目录(据说是规模要求),然后运行命令: python -m CGIHTTPServer CGI-BIN目录下,form.p ...

  4. Linux查看文件内容命令:more(转)

    Linux more命令类似cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按b键就会往回(back)一页显示,而且还有搜寻字串的功 ...

  5. HDU 3007

    基本小圆覆盖模板题 #include <iostream> #include <algorithm> #include <cmath> using namespac ...

  6. 通过UrlRewriter配置MVC4伪静态

    有些项目须要设置静态.这样能够被站点收录了,提高站点的排名.内容. 假设地址后面有www.a.com/xx.html?id=1是不行,还是不能达到一些需求.怎么才干实现www.a.com/1/xx.h ...

  7. 【小超_Android】GitHub源码项目整理,希望对大家有帮助

    收集的经常使用Github上比較优秀的项目,希望对大家日常开发有所帮助: AndroidSlidingMenu   https://github.com/jfeinstein10/SlidingMen ...

  8. 【JMeter连接SQLServer】採用window鉴权方式连接(原创)

    大家都知道Jmeter能够连接各种数据库.这方面我也不多说了,假设你还不知道怎么连接的话.能够參看我看的另外一篇博文.这边有具体的介绍 http://blog.csdn.net/lzqinfen/ar ...

  9. SDUT 1500-Message Flood(set)

    Message Flood Time Limit: 1500ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 Well, how do you feel abo ...

  10. 第14章3节《MonkeyRunner源代码剖析》 HierarchyViewer实现原理-HierarchyViewer实例化

    既然要使用HierarchyViewer来获取控件信息,那么首先我们看下在脚本中.我们是怎么获得HierarchyViewer的,看以下一段脚本代码: 1 device = MonkeyRunner. ...