web-dev-qa-db-ja.com

非ルートフォルダーでのGCCの構築

さて、これが私の最初の質問です。

私はLinux初心者であり、ソースからビルドする方法を学ぼうとしています。

私の環境:Windows 10でVMでPuTTYを介してUbuntu Server 14.04.5にSSHで接続されました

GCCをソースからビルドする最初のプログラムにしたいです。

これまでの私のプロセスは次のとおりです。

GCCを取得して別のGCCを構築できるようにするために(面白い、私は知っています)、デフォルトのディレクトリ/home/antonから実行しました:

Sudo apt-get install build-essential
Sudo apt-get install m4
Sudo apt-get install texinfo

私のgoalは、新しいGCCビルドのソースディレクトリであるルートから別のディレクトリを作成することです-それを/AntonProj1と呼びましょう

私が問題を抱えているのは次のステップです...ここに私の考えがあります。これが正しいロジックであるか、ビルド/依存関係プロセスを間違って解釈しているかどうかを教えてください。

  • ステップ1)GCC(gcc-4.1-20080630.tar.bz2を http://www.netgull.com/gcc/snapshots/4.1-20080630/ )から/AntonProj1にダウンロードします[FileZillaを使用して.bz2ファイルを手動で/AntonProj1に移動します
  • ステップ2)contrib/download_prerequisitesin /AntonProj1を実行します
  • ステップ3)export PREFIX="AntonProj1/opt/gcc-4.1" ??? <-これは正しいですか?

ステップ3は、混乱が始まる場所、または少なくとも動けなくなる場所についてです。

私は何かを読みます ここ それは言います:

「グッドプラクティスと考えられるように、ソースディレクトリツリーからすべてを構築することに注意してください。一部のパッケージは外部のみのビルドをサポートし、一部は内部のみ、一部は両方をサポートします。少なくとも古いバージョンでは、ツリーはひどく失敗します。」

これは、/AntonProj1でGCCをビルドしても大丈夫だと言っているだけです(このGCCをビルドするために使用しているGCCは別のソースディレクトリにあるため)。しかし、たとえば、/AntonProj1にある新しいGCCビルドを使用して他のプログラムをビルドする場合、たとえばLynxのようなものであれば、Lynxのソースディレクトリが/AntonProj1以外であることを確認する必要があります。 。 。おそらく/AntonProj1/Lynxのようなものですか?

TL; DR:制約が次の場合にソースからGCCをコンパイルする準備をするための最良の方法は何ですか?

  • 1)GCCをダウンロードし、/AntonProj1にコンパイルします
  • 2)ダウンロードして/AntonProj1にコンパイルしたGCCを使用して、すべて/AntonProj1フォルダー内のソースから他のプログラムをビルドします
1
Anton Rasmussen

これが実際に私のために働いたプロセスです:

ダウンロードと解凍されたディレクトリを保存するディレクトリを作成します。

Sudo mkdir -p /AntonProj1/opt/downloads /AntonProj1/tmp
  • ステップ1)GCC(gcc-4.1-20080630.tar.bz2を http://www.netgull.com/gcc/snapshots/4.1-20080630/ )から/AntonProj1/opt/downloads [I FileZillaを使用して、.bz2ファイルを/AntonProj1に手動で移動しました

  • ステップ2)ファイルを/AntonProj1/opt/downloadsに移動します

  • ステップ3)次のコマンドを実行します。

    Sudo apt-get install build-essential Sudo apt-get m4 Sudo apt-get texinfo

    Sudo apt-get install libgmp3-dev Sudo apt-get install libmpfr-dev libmpfr-doc libmpfr4 libmpfr4-dbg

    Sudo apt-get update Sudo apt-get upgrade Sudo apt-get autoremove

そして今、最も重要な/時間のかかる部分について:(これは、実際に目的のディレクトリ/AntonProj1

Sudo ./configure -prefix=/AntonProj1 --without-[blah blah]*

* --without-[blah blah]は、実際にソースからビルドするコマンドを実行するときに、依存関係の問題を解決するのに役立つ方法です。

Sudo make

*つまり、.configureが欠落している依存関係を表示する可能性があります...そして、メイクファイルが作成される前に停止することさえあります。ただし、メイクファイルが作成された場合でも、実際にSudo makeにアクセスすると、ビルドが失敗することがわかります(読みます:意志)。そのため、要求された依存関係をインストールしても、ビルドが失敗し続ける場合は、特定のことを心配しないようにコンパイラに指示する必要があるかもしれません。これは--without-[blah blah]で実行できます。 ./configureフラグの詳細については、.configure -hを実行してヘルプファイルにアクセスしてください。

注:./configureフラグを変更することになった場合、次を実行する必要があります。

Sudo make clean

そして、./configureを新しいフラグで再度。

0
Anton Rasmussen