Linux システムでの gcc コマンドの使用法の詳細な説明

Linux システムでの gcc コマンドの使用法の詳細な説明

1. gccのインストール(Ubuntuを例に)sudo apt-get install build-essential

インストール後、gcc --version でバージョンを確認できます。

gcc を使用して実行可能ファイルをコンパイルするプロセスで、その基本的なアプリケーションを習得しましょう。

準備: まず、vimを使用して現在のディレクトリに.cファイルを作成します(例:666.c)。

 $ vim 666.c

(vimの使い方については別のブログで詳しく説明しているので、ここでは詳しくは説明しません)

コードを挿入します。

 #include <stdio.h>
主要()
{
	整数 a,i;
	a=6;
	(i=0;i<3;i++) の場合
	{
		printf("%d",a);
	}
} 

(毎回catを使って確認します)

1. 前処理

1. 前処理では、マクロ定義 (#define など) を展開し、ヘッダー ファイル (stdio.h など) を展開し、条件 (ifdef など) をコンパイルし、すべてのマクロを展開し、すべてのコメント ("//" など) を削除します。前処理 cpp は、ソース コードとヘッダー ファイルを .i ファイルに前コンパイルします。 (この時点では構文はチェックされないため、構文エラーがあってもエラーは報告されません。)

2. コマンド:

 $ gcc -E (ソースファイル名) -o (プリプロセッサフ​​ァイル名)

または:

 $ gcc (ソースファイル名) > (プリプロセッサフ​​ァイル名)

たとえば、666.c によれば、前処理は次のようになります。

gcc -E 666.c -o 666.i

gcc 666.c > 666.i とも言える。

2. コンパイル

1. コンパイルとは、構文が正しいかどうかを確認し、前処理されたファイルをアセンブリ ファイルにコンパイルすることを意味します。

2. コマンド:

$ gcc -S (ソースファイル) -o (アセンブリファイル)

たとえば、gcc -S 666.i -o 666.s

3. コンパイル

1. アセンブリとは、アセンブリファイルから目的のファイル(バイナリファイル)を生成することです。アセンブリにより、テキストコードはバイナリコードに変換されます。 (バイナリ コード ファイルには .o というサフィックスが付きます)。

2. コマンド:

 $ gcc -c (アセンブリファイル) -o (オブジェクトファイル)

たとえば、gcc -c 666.s -o 666.o

(バイナリファイルなので文字化けします)

4. リンク

1. 依存ライブラリ ファイル (静的および動的) を検索し、ターゲット ファイルを実行可能プログラムにリンクします。

 $ gcc -c [対象ファイル] -o [実行可能プログラム] -l [動的ライブラリ名]

動的ライブラリがない場合(通常)

直接

$ gcc -c [対象ファイル] -o [実行可能プログラム] 

たとえば、gcc -c 666.o -o 666

このとき、実行可能プログラム666が生成される。

このコマンドを実行する場合:

 $ ./実行可能プログラム

./ は現在のディレクトリを意味します。

例えば./666

(注: 一般に、gcc 実行ファイル名を使用すると、デフォルトで a.out 実行ファイルが生成されます。この場合、./a.out を使用して直接実行できます。)

Linux システムでの gcc コマンドの詳細な使用法に関するこの記事はこれで終わりです。Linux gcc コマンドに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux gccコマンドの具体的な使い方
  • Linuxオンラインソフトウェアgccをオンラインでインストールする方法
  • Linux での GCC コンパイラのインストール手順

<<:  ベスト HTML/CSS デザインおよび開発フレームワーク 15 選を紹介します

>>:  MySQL に IP アドレスを効果的に保存する方法と、文字列 IP と数値を変換する方法の詳細な説明

推薦する

Nginx はリクエスト接続を統合し、ウェブサイトのアクセス例を高速化します

序文世界最高の Web サーバーの 1 つである Nginx の利点は明らかです。 Nginx がリ...

MySQL トリガーの追加、削除、変更、クエリ操作の例

この記事では、例を使用して、MySQL トリガーの追加、削除、変更、およびクエリ操作について説明しま...

Docker Composeでコンテナ管理の問題を解決する

Docker の設計では、コンテナは 1 つのアプリケーションのみを実行します。しかし、現在のアプリ...

フォームを送信した後、別のファイルに移動する

<br />質問:特定のファイルにジャンプするには、HTML でどのように記述すればよい...

CSS はこのように使用できますか?気まぐれなグラデーションの芸術

前回の記事「1行のCSSコードの魅力」では、たった1行のCSSコードで生成できる美しい(奇妙な感じと...

Linux で誤って削除したメッセージ ファイルを復元する方法

プロセスで使用されていて、誤って削除されたファイルがある場合、それらを回復することができます。プロセ...

WeChatミニプログラムページで値を返す4つの解決策のまとめ

目次使用シナリオ解決1. globalDataを使用して実装する2. ローカルキャッシュストレージを...

CSS 要素を表示および非表示にする 9 つの方法

Web ページの制作では、要素の表示と非表示は非常に一般的な要件です。この記事では、要素を表示したり...

CSS で QR コードスキャンボックスを実装するためのサンプルコード

カメラを開くと通常はスキャンボックスが表示されますが、静的なQRコードではフォーカスを合わせたりスキ...

MySQL の永続性とロールバックの原理を 1 つの記事で理解する

目次再実行ログディスクデータを直接更新するのではなく、最初にメモリデータを更新する必要があるのはなぜ...

WeChatアプレット学習ノート: ページ構成とルーティング

最近、小さなプログラムの開発を勉強して見直しており、学習結果のいくつかをメモしています。公式の We...

Vue3はフロントエンドのログを出力するためにaxiosインターセプターを使用する

目次1. はじめに2. axiosインターセプターを使用してフロントエンドログを出力する1. はじめ...

src 属性と href 属性の違い

src と href には違いがあり、混同される可能性があります。 src は現在の要素を置き換える...

Vue の element-ui コンポーネントのデフォルトの CSS スタイルを変更する 4 つの方法

目次序文1. グローバル統合オーバーライドを使用する2. .vueファイルを変更する3. コンポーネ...

Harborを使用してプライベートDockerリポジトリを構築する方法

目次1. オープンソースの倉庫管理ツール Harbor 2 インストール2.1 DockerとDoc...