Bash 在linux脚本上构建gcc

Bash 在linux脚本上构建gcc,bash,unix,gcc,build,Bash,Unix,Gcc,Build,您好,我为在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/lo

您好,我为在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
安装

但当我运行此脚本时,会出现错误:

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

我认为我关于退格是目录名的一部分的评论是相关的:


“这里有点奇怪,错误消息No-this file或directoryopt缺少空格和/。在我看来,您的代码似乎没有生成此错误消息,您确定$INSTALLATION\u GCC是/opt并带有前导/?吗$INSTALLATION\u GCC的第一个字符几乎是退格。”


我还在其中一条错误消息中发现了
gcc-4.7.0.tar.bz2\r
\r
会产生这些效果。
\r
(回车)最常见的不必要来源是Windows。您是否在Windows上使用类似记事本的工具来编辑脚本?如果涉及Windows,请使用
dos2unix

转换您的脚本这里有一些奇怪的地方,错误消息
没有这样的文件或目录opt
缺少空格和
/
。在我看来,您的代码没有生成此错误消息,您确定
$INSTALLATION\u GCC
是带前导的
/opt
?似乎
$INSTALLATION\u GCC
的第一个字符是一个空格。要调试bash脚本,请在shebang之后添加
-x
,即
#/bin/bash-x
或使用“set-x”。您的scrips可能缺少一些引用…我可以问一下为什么您需要自己构建gcc吗?你想达到什么目标?我有一种感觉,你走错了方向。我感兴趣的是如何从源头上建立GCC,我需要新版本的GCC因为我使用新的C++期货。我如何使用-X选项来调试我的脚本。请讨论更多的细节。最简单的调试方法是使用<代码> BASH-X脚本名称< /C>。(在Windows中,所有行均以/r结尾)这是一个主要错误,主要规则是:如果您编写的内容依赖于平台文本,则必须在此平台上编写此代码。