目次
最初: linuxgcc に含まれる c/c++ コンパイラー gcc、cc、c++、g++
2 番目: gcc の機能
3 番目: gcc 実行プロセス
4: gcc オプション
5 番目: gcc が従う合意されたルールの一部
最初: linuxgcc に含まれる c/c++ コンパイラー gcc、cc、c++、g++
その中で、gcc と cc は同じであり、c++ と g++ は同じです。 通常、c 言語プログラムは gcc でコンパイルされます gcc で Linux をコンパイルする方法 gcc で Linux をコンパイルする方法、c++ プログラムは g++ でコンパイルされます。 。
2 番目: gcc の機能
gcc は、複数のハードウェア プラットフォームをサポートするポータブル コンパイラーです。 ARM、X86など。
gcc はローカル コンパイラーであるだけでなく、プラットフォーム間でクロスコンパイルすることもできます。いわゆるローカル コンパイラとは、コンパイルされたプログラムがローカル環境でのみ実行できることを意味します。他のプラットフォームでは、gcc によってコンパイルされたプログラムのみを実行できます。
gcc には、さまざまな言語を解析するための複数の言語バックエンドがあります。さらに、gcc はモジュール性に従って設計された Linux vi コマンドであり、新しい言語と新しい CPU アーキテクチャのサポートを追加できます。 gccはフリーソフトです。誰でもこのソフトウェアを使用または変更することができます。
3 番目: gcc 実行プロセス
(1) コマンドラインに gcctest.c
と入力します。これにより、デフォルトで a.out という名前のプログラムがコンパイルされます。
コマンドラインに次のように入力します: ./a.out
プログラムを実行できます。
(2) コマンドラインに次のように入力する場合: gcctest.c-otest
これにより、testという名前のプログラムがコンパイルされます
コマンドラインに次のように入力します: ./test
プログラムを実行できます。
注: -o パラメーターは、生成されたプログラムの名前を指定するために使用されます
(3) Linuxオペレーティングシステムのバージョンの段階的な実行、より具体的なイメージ
これには 4 つのプロセスが含まれます:
1.前処理
基本的に、4 つの操作 (ヘッダー ファイルの展開、コメントの削除、マクロの置換、条件付きコンパイルを含む) を実行します。
具体的な操作: コマンドライン入力: gcc-Etest.c-otest.iこのコマンドは、前処理の最初のステップの後、停止し、一時コンテンツが test.i ファイルに保存されることを意味します
2.コンパイル
本質はC言語をアセンブリ言語にすることです
具体的な操作: コマンドライン入力: gcc-Stest.i-otest.s
このコマンドの意味: コンパイルの 2 番目のステップの後、コンパイルは停止し、一時コンテンツが test.s ファイルに保存されます
3.コンパイル
本質は、アセンブリ言語をターゲットの 2 の補数ファイル (実行可能ではありません) に変えることです
具体的な操作: コマンドライン入力: gcc-ctest.s-otest.o
このコマンドは、アセンブリの 3 番目のステップが完了すると停止し、一時コンテンツが test.o ファイルに保存されることを意味します
4.リンク
本質は、実行可能ファイルまたはライブラリ ファイルを生成するためにコード内で使用するサードパーティ ライブラリを導入することです
(サードパーティライブラリはコンパイラとファイルサフィックスによって決定されます)
4: gcc オプション
-E は前処理操作のみを実行します
-S はアセンブリ停止までコンパイルします (アセンブルは行わず、前処理とコンパイルのみを完了します)
-c はアセンブリ操作を実行します (アセンブリコードにコンパイルします)
-O[0,1,2,3]
最適化プログラム (デフォルトはレベル 2 の最適化、0 は最適化されず、3 は最高の最適化レベルです)
-static は生成されたファイルに静的リンクを使用します
-shared 動的ライブラリを使ってみる
-イディル
ヘッダーファイルを検索するディレクトリパスに dir ディレクトリを追加します
-LDIR
dir ディレクトリを検索ライブラリのディレクトリ パスに追加します
リリブ
ライブラリライブラリを接続する
-Wall により、gcc はソース ファイル内のコードの問題に対して警告メッセージを発行します
-W警告メッセージを発行しないでください
-g は、gdb などのデバッガーによるデバッグを容易にするために、ターゲット ファイルにデバッグ情報を生成します
以上がコマンドライン入力に基づいてプロセスを実行する C/C++ コンパイラの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。