美好的一天,我在linux上编写用于构建gcc的脚本,我的代码是:
#!/bin/bash
export INSTALLATION_GCC=/opt
cd $INSTALLATION_GCC
tar xjvf gcc-4.7.0.tar.bz2
export srcdir="$INSTALLATION_GCC/gcc-4.7.0"
export objdir="$INSTALLATION_GCC/gcc-bin"
export insdir="$INSTALLATION_GCC/usr/local"
mkdir -p $srcdir
mkdir -p $objdir
mkdir -p $insdir
cd $objdir
$srcdir/configure --prefix=$insdir
make bootstrap
make install
但是当我运行这个脚本时,我会收到错误:
No such file or directoryopt
tar (child): gcc-4.7.0.tar.bz2\r: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
/configure: No such file or directory
'. Stop. No rule to make target `bootstrap
'. Stop. No rule to make target `install
为什么cd无法正常工作,如果我执行我的脚本(如果我在交互模式下输入此命令都可以)?在构建和安装gcc之后为什么我的gcc版本没有改变,我怎样才能正确替换旧版本的gcc?
答案 0 :(得分:0)
我认为我对作为目录名称一部分的退格的评论是相关的:
“这里有一些奇怪的,错误信息没有这样的文件或directoryopt缺少一个空格和/。它看起来像你的代码没有生成此错误消息,你确定$ INSTALLATION_GCC是/ opt with领先/?几乎看起来$ INSTALLATION_GCC的第一个字符是退格。“
我还在其中一条错误消息中发现了gcc-4.7.0.tar.bz2\r
。 \r
会产生这些效果。 \r
(回车)最常见的不需要的来源是Windows。您是否在Windows上使用记事本等编辑脚本?如果涉及Windows,请使用dos2unix
转换脚本。