さて、これが私の最初の質問です。
私は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
と呼びましょう
私が問題を抱えているのは次のステップです...ここに私の考えがあります。これが正しいロジックであるか、ビルド/依存関係プロセスを間違って解釈しているかどうかを教えてください。
/AntonProj1
にダウンロードします[FileZillaを使用して.bz2ファイルを手動で/AntonProj1
に移動しますcontrib/download_prerequisites
in /AntonProj1
を実行しますexport PREFIX="AntonProj1/opt/gcc-4.1"
??? <-これは正しいですか?ステップ3は、混乱が始まる場所、または少なくとも動けなくなる場所についてです。
私は何かを読みます ここ それは言います:
「グッドプラクティスと考えられるように、ソースディレクトリツリーからすべてを構築することに注意してください。一部のパッケージは外部のみのビルドをサポートし、一部は内部のみ、一部は両方をサポートします。少なくとも古いバージョンでは、ツリーはひどく失敗します。」
これは、/AntonProj1
でGCCをビルドしても大丈夫だと言っているだけです(このGCCをビルドするために使用しているGCCは別のソースディレクトリにあるため)。しかし、たとえば、/AntonProj1
にある新しいGCCビルドを使用して他のプログラムをビルドする場合、たとえばLynxのようなものであれば、Lynxのソースディレクトリが/AntonProj1
以外であることを確認する必要があります。 。 。おそらく/AntonProj1/Lynx
のようなものですか?
TL; DR:制約が次の場合にソースからGCCをコンパイルする準備をするための最良の方法は何ですか?
/AntonProj1
にコンパイルします/AntonProj1
にコンパイルしたGCCを使用して、すべて/AntonProj1
フォルダー内のソースから他のプログラムをビルドしますこれが実際に私のために働いたプロセスです:
ダウンロードと解凍されたディレクトリを保存するディレクトリを作成します。
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
を新しいフラグで再度。