【问题标题】:Configure: error: cannot run /bin/sh配置:错误:无法运行 /bin/sh
【发布时间】:2014-06-11 16:38:29
【问题描述】:

我正在尝试按照 Fedora Virtual Box Image 上http://openrisc.net/toolchain-build.html 提供的指南为 OpenRISC 构建 GNU 工具链。

我说错了

Configure: error: cannot run /bin/sh ../gcc-svn/config.sub

当我尝试配置 gcc 时。

我是 Linux 新手。我在网上找不到任何解决方案。非常感谢任何解决该问题的帮助。

【问题讨论】:

    标签: linux gcc gnu-toolchain


    【解决方案1】:

    使用十六进制编辑器打开 config.sub 以查看行尾是否为 \r\n 而不仅仅是 \n。如果是这样,请备份整个文件夹,然后键入:

    dos2unix *

    这会将所有行结尾从 \r\n 更改为 \n,并且它会在原地执行此操作,覆盖每个文件。然后,再试一次:

    ./configure(带有您想要的任何选项)

    我在 cygwin for Windows 上遇到了这个问题,其中 GitHub 已将所有文件转换为 \r\n,因此我必须使用 dos2unix 将它们转换回来。

    【讨论】:

    【解决方案2】:

    1.检查并安装libtools

    yum install libtool       
    yum install libtool-ltdl    
    yum install libtool-ltdl-devel       
    

    2.尝试通过shell运行“../gcc-svn/config.sub”

    /bin/bash ../gcc-svn/config.sub
    

    看看是否显示如下:

    [root@centos jemalloc]# /bin/bash ./config.sub
    : 命令未找到 6:
    : command not foundine 8:
    : command not foundine 30:
    : 命令未找到 31:
    : 命令未找到 39:
    : 命令未找到 42:
    : command not foundine 50:
    : 命令未找到 57:
    : 命令未找到 59:
    : 命令未找到 72:
    : 命令未找到 82:
    : 命令未找到 85:
    '/config.sub.bak:第 88 行:
    中的意外标记附近出现语法错误 '/config.sub.bak: line 88: `case $1 in

    3.找到系统config.sub

     find / -name config.sub
    

    它显示:

    /usr/share/libtool/config/config.sub
    

    比较这两个config.sub,看看它们是否相似。

    4.用系统文件替换config.sub

    mv ../gcc-svn/config.sub ../gcc-svn/config.sub.bak
    cp /usr/share/libtool/config/config.sub ../gcc-svn/config.sub 
    
    mv ../gcc-svn/config.guess ../gcc-svn/config.guess.bak
    cp /usr/share/libtool/config/config.guess ../gcc-svn/config.guess
    
    1. 试试看是否成功。

    【讨论】:

    • 我试图 ./configure 一个库和 config.guessconfig.sub 文件已经过时了。将两者都替换为 libtools 附带的那些,它就像一个魅力。谢谢!
    【解决方案3】:

    ../gcc-svn/config.sub 文件的第一行是什么?我猜它可能有一个错字。应该是

    #!/bin/sh
    

    而不是

    /bin/sh
    

    如果是的话

    #!/bin/sh
    

    确保文件 /bin/sh 存在且可执行

    ls -l /bin/sh
    

    应该显示类似

    -rwxrwxrwx 1 root root 4 Feb  3  2009 /bin/sh
    

    【讨论】:

    • 亲爱的,我当然希望它不是世界可写的! :)
    • :D 疏忽。在我的机器上它实际上是“lrwxrwxrwx 1 root root 4 Feb 3 2009 /bin/sh -> bash”但我认为这很混乱,因为我认为它通常不是一个链接。所以我迅速删除了“l”而不考虑其余部分。好点;)
    • 第一行是 #!/bin/sh 并且 ls -l /bin/sh 给出了预期的输出。但问题依然存在。
    • config.sub 文件是否可执行?
    猜你喜欢
    • 2018-09-03
    • 1970-01-01
    • 2016-08-26
    • 2017-06-25
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多