Linux gccコマンドの具体的な使い方

Linux gccコマンドの具体的な使い方

01. コマンドの概要

gcc コマンドは、GNU がリリースした C/C++ ベースのコンパイラを使用します。オープンソース分野で最も広く使用されているコンパイラです。強力な機能を備え、パフォーマンスの最適化をサポートするコードをコンパイルします。

gcc は GNU コンパイラ コレクションであり、C、C++、Objective-C、Fortran、Java、Ada、Go、D のフロントエンドと、これらの言語のライブラリ (libstdc++、libgcj など) が含まれています。 GCC はもともと、GNU オペレーティング システム専用に作成されたコンパイラーとして意図されていました。 GNU システムは完全にフリーソフトウェアです。ここでの「無料」とは、ユーザーの自由を尊重することを意味します。

02. コマンド形式

使用法: gcc [オプション] ファイル...

03. 共通オプション

 -pass-exit-codes 特定のステージを終了するときに最も高いエラー コードを返します --help このヘルプの説明を表示します --target-help ターゲット マシン固有のコマンド ライン オプションを表示します --help={common|optimizers|params|target|warnings|[^]
 {結合|分離|文書化されていない}}[,...]
              特定のタイプのコマンドラインオプションを表示します(サブプロセスのコマンドライン引数を表示するには、「-v --help」を使用します)
 --version コンパイラのバージョン情報を表示します -dumpspecs 組み込みの仕様文字列をすべて表示します -dumpversion コンパイラのバージョン番号を表示します -dumpmachine コンパイラのターゲットプロセッサを表示します -print-search-dirs コンパイラの検索パスを表示します -print-libgcc-file-name コンパイラの付属ライブラリの名前を表示します -print-file-name=<library> <library> へのフルパスを表示します -print-prog-name=<program> コンパイラコンポーネント <program> へのフルパスを表示します -print-multiarch ターゲットの正規化された GNU トリプレットを表示します。
              ライブラリパス内のコンポーネント
 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
 -pie 位置独立実行ファイルを作成する
 -shared 共有ライブラリを作成する
 -x <language> は、次の入力ファイルの言語を指定します。 許可される言語は次のとおりです: c c++ assembler none
              「なし」は、ファイル拡張子に基づいてソース ファイルの言語を推測するデフォルトの動作を復元することを意味します。

04. 参考例

4.1 デフォルトの実行ファイルを生成する

[deng@localhost bak]$ gcc test.c 
[deng@localhost 戻る]$

test.c を前処理、アセンブル、コンパイルし、実行可能ファイルにリンクします。出力ファイルが指定されていない場合、デフォルトの出力は a.out になります。

4.2 出力ファイルの指定

[deng@localhost bak]$ gcc test.c -o テスト
[deng@localhost 戻る]$ ls
5番目 6番目 7番目 8番目 9番目 テスト test.c
[deng@localhost 戻る]$ 
 

test.c を前処理、アセンブル、コンパイル、リンクして、実行可能ファイル test を作成します。 -o オプションは出力ファイル名を指定するために使用されます。

4.3 前処理のみ、コンパイル、アセンブリ、リンクなし

[deng@localhost bak]$ gcc -E test.c -o test.i 
[deng@localhost 戻る]$

test.c を前処理し、test.i ファイルを出力します。

4.4 アセンブルやリンクなしでアセンブリ言語にコンパイルする

[deng@localhost bak]$ gcc -S test.c -o test.s
[deng@localhost 戻る]$ ls
5番目 6番目 7番目 8番目 9番目 テスト test.c test.i test.s
[deng@localhost 戻る]$

前処理された出力ファイル test.i を test.s ファイルにアセンブルします。

4.5 リンクせずにオブジェクトコードにコンパイルおよびアセンブルする

[deng@localhost bak]$ gcc -c test.c -o test.o
[deng@localhost 戻る]$ ls
5番目 6番目 7番目 8番目 9番目 テスト test.c test.i test.o test.s
[deng@localhost 戻る]$

4.6 ターゲットコードから実行ファイルを生成する

[deng@localhost bak]$ gcc test.o -o テスト
[deng@localhost 戻る]$

コンパイルされた出力ファイル test.o を最終実行可能ファイル test にリンクします。

4.7 コンパイル時の最適化レベルの指定

[deng@localhost bak]$ gcc -O1 test.c -o テスト
[deng@localhost 戻る]$

コンパイル最適化レベル 1 を使用してプログラムをコンパイルします。レベルは1~3です。レベルが高くなるほど最適化の効果は上がりますが、コンパイル時間は長くなります。

4.8 複数ファイルのコンパイル

[deng@localhost bak]$ gcc testfun.c test.c -o test
[deng@localhost 戻る]$

testfun.c と test.c を別々にコンパイルし、テスト実行可能ファイルにリンクします。

4.9 複数ファイルのコンパイル方法2

[deng@localhost bak]$ gcc -c test.c  
[deng@localhost バックアップ]$ gcc -c testfun.c  
[deng@localhost bak]$ gcc test.o testfun.o -o test
[deng@localhost 戻る]$

Linux gcc コマンドの具体的な使い方についてはこれで終わりです。Linux gcc コマンドに関するより詳しい内容については、123WORDPRESS.COM の過去の記事や以下の関連記事をご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linuxオンラインソフトウェアgccをオンラインでインストールする方法
  • Linux での GCC コンパイラのインストール手順
  • Linux システムでの gcc コマンドの使用法の詳細な説明

<<:  Win7 インストール MySQL 5.6 チュートリアル図

>>:  Vue.js の watch メソッドと computed メソッドの違いの詳細な例

推薦する

meta name="" content="の機能の詳細な説明

1. 文法: <meta name="名前" content="...

Vueのコンポーネントのprops属性について詳しく説明します

目次質問1: 小道具は具体的にどのように使用されますか?原理は何ですか?下を見る質問 2: 年齢に ...

Linux (CentOS7) に Tomcat をインストールし、Tomcat をスタートアップ項目として設定します (tomcat8 を例に挙げます)

目次TomcatをインストールするTomcat 圧縮パッケージをダウンロードTomcatには3つの主...

React onClickにパラメータを渡す問題について話しましょう

背景下のようなリストでは、削除ボタンをクリックすると削除操作を実行する必要があります。 リスト生成:...

JavaScript 変数の昇格についての簡単な説明

目次序文1. どのような変数が促進されますか? 2. 可変プロモーションがあるのはなぜですか? (1...

MySQLステートメントを監視する方法の詳細な説明

クイックリーディングSQL ステートメントを監視する必要があるのはなぜか、監視方法と監視手段について...

SHTML 簡潔なチュートリアル

SHTMLとASPは似ています。SHTMLという名前のファイルでは、SSIの命令がASPの命令と同じ...

VMware 仮想マシンのインストール CentOS 8 (1905) システム チュートリアル ダイアグラム

世界的に有名な仮想マシン ソフトウェア VMware-workstation-full-15.5.0...

Dreamweaver8を使用してウェブサイトのファイルをチェックして整理する方法

Dreamweaver8 を使用して独自の Web サイトを作成する目的は何ですか?インターネットに...

Dockerにおけるコンテナとイメージの違いについてお話ししましょう

鏡とは何ですか?イメージは、複数のイメージ レイヤー (UnionFS および AUFS ファイル ...

パフォーマンスの最適化を教える 52 個の SQL 文

1. クエリを最適化するには、テーブル全体のスキャンを避けてください。まず、where と orde...

CSS3 のカラー値 RGBA とグラデーションカラーの使用方法の紹介

CSS3以前は、グラデーション画像は背景画像としてのみ使用できました。 CSS3 のグラデーション構...

Vue3 ページ、メニュー、ルートの使用

目次1. メニューをクリックしてジャンプ1. ページ名の統一2. 管理ページを追加3. ルートを追加...

LinuxのCentos7でmysql5.7.29を構築する詳細なプロセス

1. MySQLをダウンロードする1.1 ダウンロードアドレスhttps://downloads.m...

ESXI の仮想マシンにワークステーションをインストールするときに発生するネットワーク障害の解決策

問題の説明ESXI で Windows にワークステーションをインストールした後、内部の仮想マシンは...