GCC-シェルスクリプトをLinuxのインストール

GUNコンパイラコレクションGCCは、それが簡単にソースコードをコンピュータが直接実行できるバイナリコードに構築するために人間によって使用される高レベルの言語で書かれたことができ、コンパイラに加えて、それはまた、他のツールが含まれている、と呼ばれています。GCCは、それが事実上の標準的なLinuxプラットフォームのコンパイラで、最も一般的に使用されるLinuxプラットフォームコンパイラです。一方、Linuxプラットフォーム上の組込み開発の分野では、GCCコンパイラの最も一般的なタイプを使用しています。それは異なるターゲットアーキテクチャの様々なサポートすることができますので、GCCは、広く使用されている理由。例えば、(コンパイラを言う単純なプラットフォームのために、それはプラットフォーム上でコンパイルされた)ホストの開発をサポート両方、さらに(すなわち、プラットフォーム上のAは、プラットフォームBで使用するためのコンパイルされたプログラムである)は、クロスコンパイラをサポートします。現在、GCCはその上のX86シリーズ、腕、PowerPCとで共通する40以上の種類が、アーキテクチャをサポートしています。一方、GCCは、そのようなので、上のLinux、Solaris版、Windowsとなどの異なるオペレーティングシステム上で実行することができます。

C言語をサポートする上で、GCC加え以外の話に加えて、また、C ++、エイダ、ジャワ、Objective-Cの、FORTRAN、パスカルなどの他の言語、さまざまなをサポートしていますので、上に行くと。

多くのアプリケーションgccをインストールする必要がコンパイルするとき基本的には、一般的に使用されるバージョンは、インストールコマンドでこんなに早く、非常に高いではありません。

yumを-yのgcc-Cをインストール++

ただし、一部のアプリケーションでは、GCCのコンパイル時間の上位バージョンを必要とし、この時間は基本的にのみインストールをコンパイルすることができ、およびインストールは非常に面倒GCCコンパイラでは、コンパイラは、特別に準備のインストールを成功促進するためにされたインストールのバージョンを指定するには、いくつかのコンポーネントに依存する必要がありますインストール・シェル・スクリプト、スクリプト無人インストールは、もちろん、インストールプロセスは、スクリプトをコンパイルするビット長であり、一時的にのみCentOSのシステムをサポート(7へのシステムバージョン5がテストされている)の下にインストールする(他のシステムを迅速に調整する必要がYUMコンポーネントをインストールコマンドそして、対応するインストールパッケージ名)

#!/ binに/ bashの
#公式サイトhttps://gcc.gnu.org/ 
#ダウンロード(ミラー)
#https://gcc.gnu.org/mirrors.html 
#は説明依存
#のHTTPSを:// GCC。 gnu.org/install/prerequisites.html 
#コマンドパラメータ
#$ 1あなたは最新バージョンを取得、その後合格しない場合は、インストールのバージョンを指定して、最新バージョンは、新たな新しいです
#の

#GCCバージョン番号
GCC_VERSION = $ 1 
#GCCのインストール・ベース・ディレクトリ
」=は、install_base / usr / local / GCC / " 
#必要なライブラリベースディレクトリの
INSTALL_PACKAGE_BASE ="は/ usr / local / " 
#のGCCコンパイラが配置された
GCC_CONFIGURE_WITH = '' ミラーアドレス
MIRRORS_URL =" http://mirror.linux-ia64.org/gnu / gccの" 

IF [-z $ 1] || [[$ 1 =="新新"]];そして
    !エコー" gccのバージョンが"空である
    エコー"最新の安定バージョンを取得...「;
    GCC_VERSION = `カール$ MIRRORS_URL /リリース/ 2>&1 | grepの-P 'gcc- \ dは+ \ \ D + \ \ D +。' -o |尾1 -n | grepをする-P '\ D + \ \ D + \ \ D +。' -o` 
    [-z「$のGCC_VERSION場合; "]、その後
        !获取版失败を"エコー"。
        退出
    Fiの
    [-z $ 1]であれば、その後、
        $ GCC_VERSIONエコー
        の出口
    Fi回線
Fiが
[-e "$は、install_base $ GCC_VERSION / binに/ gccの"]場合は、次に
    エコー"すでにインストールgcc- $のGCC_VERSIONを!" 
    退出
Fiの

OLD_PATH = `pwd`は
あれば[[ "$ 0"=〜 '/']]; そして、
    CD "`エコー"$ 0" | '(?/ [^ /] + /)+'はgrepの-P -o`"

[もし!-d "gccの"];その後、
    MKDIR GCC 
Fi回線
CDのgccの
[あれば!-e "gcc- $ GCC_VERSION.tar.gz"]; その後、
    #download PHPの
    エコー"のダウンロードgcc- $ GCC_VERSION.tar.gz"。
    wgetの$ MIRRORS_URL /リリース/ gcc- $ GCC_VERSION / gcc- $ GCC_VERSION.tar.gz 2>&1 
Fiの
[あれば!-d "gcc-の$ GCC_VERSION"]; その後、
    #decompression 
    エコー「解凍gcc- $ GCC_VERSION.tar.gz」。
    タール-zxf gcc- $ GCC_VERSION.tar.gz 
Fiの
[場合!-d "gcc-の$ GCC_VERSION"]; その後、
    「gcc- $ GCC_VERSION dirが存在されていません」エコー
    の出口を
Fiの

エコー「の依存をインストールします」


#しばらく循环使用的是管道、会开启子进程、无法修改外部的变量

PACKAGE_LISTS = `猫gcc- $ GCC_VERSIONに/ contrib / download_prerequisites | グレップ-P '\ - \ dは+ \ \ D +(\ \ D +。)\ tar'`。?。
`エコー-e $ PACKAGE_LISTS`でLINEのための
DO 
    PACKAGE_VERSION_FILE =`エコー$行|グレップの-P' \ W + \ - \ dは+ \ \ D +(\ \ D +。)\タール\(BZ2 | GZ)。?。」-o` 
    PACKAGE = `エコー$のPACKAGE_VERSION_FILE |グレップの-P '^ \ wの+' -o` 
    PACKAGE_VERSION_DIR =`エコー$ PACKAGE_VERSION_FILE |グレップの-P '\ W + \ - \ dは+ \ \ D +(\ \ D +。)。?-o` 
    PACKAGE_VERSION = `$エコーのPACKAGE_VERSION_DIR |グレップの-P '\ D + \ \ D +(\ \ D +。)。?-o` 
    PACKAGE_CONFIGURE_WITH = $ GCC_CONFIGURE_WITH 
    GCC_CONFIGURE_WITH = "$ PACKAGE_CONFIGURE_WITH --with- $ PACKAGE = $ INSTALL_PACKAGE_BASE $ PACKAGE / $のPACKAGE_VERSION"
    "$ PACKAGE_VERSION_DIRをインストール"、エコー
    [-d "$ INSTALL_PACKAGE_BASE $パッケージ/ $のPACKAGE_VERSION"]場合。その後、
        エコー「$ PACKAGE_VERSION_DIRすでにインストール」。
        持続する; 
    Fiの
    [あれば!-e "$ PACKAGE_VERSION_FILE"]; その後、
        #downloadパッケージ
        エコー「ダウンロードの$ PACKAGE_VERSION_FILE」。
        wgetの$ MIRRORS_URL /インフラ/ $ PACKAGE_VERSION_FILE 2>&1 
    Fiの
    [あれば!-d "$ PACKAGE_VERSION_DIR"]; その後、
        #decompression 
        エコー「解凍の$ PACKAGE_VERSION_FILE」。
        もし[-n "` $エコーのPACKAGE_VERSION_FILE |グレップの-P '\ .gzを$' `"];
            タール-xf $ PACKAGE_VERSION_FILE 
        Fiの
    Fiの
    [あれば!-d "$ PACKAGE_VERSION_DIR"]; その後、
        「$ PACKAGE_VERSION_DIRのディレクトリが存在していません」エコー
        の出口
    Fi回線
    のCDの$ PACKAGE_VERSION_DIRを
    [[「$パッケージ」場合 
        PACKAGE_CONFIGURE_WITH = '--with-GMP-接頭辞=' `エコー$のPACKAGE_CONFIGURE_WITHを|。グレップの-P「[^ =] + GMP / \ dは+ \ \ D + \ \ D +。 "-o` 
    Fiの
    エコー"は./configure --prefix = $ INSTALL_PACKAGE_BASE $ PACKAGE / $ PACKAGE_VERSION $ PACKAGE_CONFIGURE_WITH」
    は./configure --prefix = $ INSTALL_PACKAGE_BASE $ PACKAGE / $ PACKAGE_VERSION $ PACKAGE_CONFIGURE_WITH 2>&1人の
    メイク2>&1つの
    メイクインストール2 >&1 
    [あれば!-d "$ INSTALL_PACKAGE_BASE $ PACKAGE / $のPACKAGE_VERSION"] || [-z "
        "!$パッケージ- $ package_version失敗インストール"エコー
        出口
    Fiを提供して
    IF [[ "$パッケージ" == "ISL"]];その後、
        エコー"MVのlib / * PYファイルを。" 
        のシェアに影響を与えます。#クリアPYファイル、ダイナミックリンクライブラリのldconfigコマンドが失敗し 
    場合は、[-d "$ INSTALL_PACKAGE_BASE $ PACKAGEのlib / $ pACKAGE_VERSION /"] && [-z "`猫/etc/ld.so.conf|grep"$ INSTALL_PACKAGE_BASE $ PACKAGE / $のPACKAGE_VERSION "`"];その後、
            && [-e "$ PY_FILE"] [ "$ PY_FILE" -n]場合は、次に
                エコー"MVを$ PY_FILE $ INSTALL_PACKAGE_BASE $ PACKAGE / $のPACKAGE_VERSION" 
                MV $ PY_FILE $ INSTALL_PACKAGE_BASE $ PACKAGE / $ PACKAGE_VERSION 
            Fiが
        行わ
    Fi回線
    #共享的动态链接库、加载配置 
Fiの
        エコー"$ INSTALL_PACKAGE_BASE $ PACKAGE / $ PACKAGE_VERSION / libに" >>は/etc/ld.so.confの
        ldconfigをする
    Fi回線
    CD ../ 
完了

gcc- $ GCC_VERSIONは、CD 
"gccがインストール"エコー
クリーン2>&1作る
#需要系统64位を禁用multilibの
であれば[-n "`は、uname -a | grepの-o -P | grepのx86_64版-o` 'エル\ dは+ \ X \ D + _ \ D +'"]; その後、
    GCC_CONFIGURE_WITH = $ GCC_CONFIGURE_WITH '--disable-multilibの' 

#新版需要下载配置文件
[あれば!-e "は./configure"] && [-e "./contrib/download_prerequisites"];その後、
    ./contrib/download_prerequisites 
     ます。mkdirのgcc-作る-TMP 
     のCDのgcc-TMP作る
    エコー」.. 
    ../configure --prefix = $ $は、install_base GCC_VERSION $ GCC_CONFIGURE_WITH 2>&1 
それ以外の
    エコー"は./configure --prefix = $は、install_base $ GCC_VERSION $ GCC_CONFIGURE_WITH" 
    は./configure --prefix = $は、install_base $ GCC_VERSION $ GCC_CONFIGURE_WITH 2>&1 
Fiの

HTREAD_NUM = `lscpu | grepのスレッド| grepを- P -o` '\ dの+ $' 
-j $ HTREAD_NUM 2>&1つの作る
makeは2をインストール>&1つの

#チェックは、ステータスをインストールする
[場合!-d "$は、install_base $ GCC_VERSION"] || [-z " 
    エコー"[エラー]インストールgcc- $ GCC_VERSION失敗!"; 
それ以外を
    "$は、install_base $ GCC_VERSION / lib64に" >>は/etc/ld.so.confエコー
    エコー"MV lib64に/ *。pyのファイル" 
    这些文件会影响共享的动态链接库にldconfig命令执行失败、#清除PY文件を
    PY_FILEため`見つける$は、install_base $ GCC_VERSION / lib64に/ -name "*の.py"で
    / etc / profileをのソースは/ etc / profile 
    yumを削除-yのgcc-C ++ 
    エコー"gcc- $のGCC_VERSIONの成功をインストール!"; 
Fiの


どのように使用するには:

rootアカウントでは、.SHサフィックスをシェルスクリプトファイルを作成し、よう:gcc-install.shとインストールコードを保存するには上記の書かれています。

インストールコマンド

新しいbashのgcc-install.sh

システムが失敗したインストールには小さすぎるリードを依存している場合、あなたは、あなたがインストールスクリプトでインストールディレクトリの構成の変更に行くことができます(非常に適切でない設置することができるシステムの依存関係をテストするための一例として、ここでは)対応の依存関係を増やす必要がある、インストールは成功しますインストールが成功したコピーをヒント。


おすすめ

転載: blog.51cto.com/php2012web/2432093