前言
 
在编译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. webpack学习笔记(1)--webpack.config.js

    主要的信息都是来自于下方所示的网站 https://webpack.docschina.org/configuration 从 webpack 4.0.0 版本开始,可以不用通过引入一个配置文件打包项 ...

  2. namespace、struct、enum、union、string(day01)

    一 C++概述 C++历史背景 )C++的江湖地位 jave C C++ C# python )C++之父:Bjarne Stroustrup(--) ,Cpre,为C语言增加类的机制 ,Bjarne ...

  3. [jzoj5791]【NOIP2008模拟】阶乘 (数学)

    传送门 Description 有n个正整数a[i],设它们乘积为p,你可以给p乘上一个正整数q,使p*q刚好为正整数m的阶乘,求m的最小值. Input 共两行. 第一行一个正整数n. 第二行n个正 ...

  4. 简述synchronized和java.util.concurrent.locks.Lock的异同

    1.synchronized 用在方法和代码块的区别? a. 可以只对需要同步的使用 b.与wait(),notify()和notifyall()方法使用比较方便 2.wait() a.释放持有的对象 ...

  5. [bzoj3530][Sdoi2014]数数_AC自动机_数位dp

    数数 bzoj-3530 Sdoi-2014 题目大意:给你一个整数集合,求所有不超过n的正整数,是的它的十进制表示下不能再一段等于集合中的任意数. 注释:$1\le n \le 1200$,$1\l ...

  6. rabbitmq安装、集群搭建

    rabbitmq的安装: CentOS上面部署: 首先修改hosts文件 修改hosts文件vi /etc/hosts1.1.1.1 hostname 2.2.2.2 hostname 3.3.3.3 ...

  7. HDU 3987 && DINIC

    很容易发现是网络流的题目,但最少边怎么求呢?初时想不到,但画图后忽然发现可以这样: 求一次网络流最小割后,把满流的边置1,不满流的置INF.再求一次最大流即可. 为什么呢? 是否会存在一些边当前不满流 ...

  8. 为什么用clojure作为storm 的主要开发语言

    Why you choose Clojure as the development language of Storm? Could you talk about your long practica ...

  9. 19 个必须知道的 VS 快捷键

    本文将为大家列出在Visual Studio中常用的快捷键,正确熟练地使用快捷键,将大大提高你的编程工作效率. 项目相关的快捷键 Ctrl + Shift + B = 生成项目 Ctrl + Alt ...

  10. HDU-5310-Souvenir(C++ && 简单数学题)

    Souvenir Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total ...