C++——g++常用コマンド

4292 ワード

前に書く
C++を学ぶにはもちろんコードを書くことをたくさん試しますが、毎回Visual Studioで開くのは手間がかかりすぎる場合は、g++というコンパイラを使うことを学んで、主にすぐに便利でしょう.このブログでは、g++常用コマンドを整理します.
参考文献
  • g++コマンドライン詳細
  • gcc/g++基本コマンド概要
  • g++コンパイルプロセス
    gcc and g++はそれぞれgnuのc&c++コンパイラである.g++はc++のコマンドである.cppを主とし、c言語の接尾辞名は一般的に.c.このときgccに切り替えるように命令すればよい.実はどうでもいい.コンパイラは、gccまたはg++に基づいて、C規格に従ってリンクをコンパイルするか、C++規格に従ってリンクをコンパイルするかを決定する.
    gcc/g++コンパイル作業を実行するには、合計4ステップが必要です.
  • の前処理により生成する.iのファイル[プリプロセッサcpp]
  • 前処理後のファイルをアセンブリ言語に変換するファイルを生成する.s[コンパイラegcs]
  • は、アセンブリがターゲットコード(マシンコード)になる生成がある.oのファイル[アセンブリas]
  • 接続先コードは、実行可能プログラム[リンクld]
  • を生成する.
    g++共通コマンド
    -x language filename設定ファイルで使用する言語は、接尾辞名を無効にし、以降の複数に有効とする.すなわち、約束C言語による接尾辞の名称は.cの、C++の接尾辞名は.Cまたは.cpp、もしあなたが個性的であれば、あなたのCコードファイルの接尾辞名を決めます.pigははははは、次のパラメータの使用がない限り、このパラメータは彼の後ろのファイル名に役立ちます.使用できるパラメータは以下のc', objective-c’,c-header', c+’,cpp-output', assembler’,and`assembler-with-cpp’がある.英語を見ると、理解できるはずです.例用法:gcc-x c hello.pig-x none filename前のオプションをオフにします.つまり、gccにファイル名の接尾辞に基づいて、自動的にファイルタイプを識別する例の使い方:gcc-x c hello.pig -x none hello2.c-cは前処理、コンパイル、アセンブリのみをアクティブにします.つまり、プログラムをobjファイルにする例の使い方:gcc-c hello.c彼は生成する.oのobjファイル
    -Sはプリプロセッシングとコンパイルのみをアクティブ化し,ファイルをアセンブリコードにコンパイルする.例用法gcc-S hello.c彼は生成する.sのアセンブリコードは、テキストエディタで確認できます.
    -Eは前処理のみをアクティブにします.これはファイルを生成しません.出力ファイルにリダイレクトする必要があります.例用法:gcc-E hello.c > pianoapan.txt   gcc -E hello.c|moreゆっくり見て、1つのhello wordも800行のコードに処理します
    -o目標名を制定して、デフォルトの時、gccがコンパイルしたファイルはa.outで、とても聞き苦しいで、もしあなたと私が同感であれば、それを直して、ハハ例の使い方gcc-o hello.exe hello.c(ああ、windowsは慣れた)gcc-o hello.asm -S hello.c
    -pipeはコンパイル中の一時ファイルの代わりにパイプを使用し、gnu以外のアセンブリツールを使用する場合、問題があるかもしれませんgcc-pipe-o hello.exe hello.c
    -ansiはgnu cのansi cと互換性のない特性を閉じ、ansi cの独自の特性をアクティブにします(asm inline typeofキーワードの一部を禁止したり、UNIX、vaxなどの前処理マクロを禁止したり、
    -fno-asmこのオプションはansiオプションの機能の一部を実現し、asm、inline、typeofをキーワードとして使用することを禁止します.-fno-strict-prototypeはg++にのみ作用し、このオプションを使用すると、g++はパラメータを持たない関数に対して、パラメータがないのではなく、明示的なパラメータの個数とタイプの説明がないと考えられる.gccはこのパラメータを使用するかどうかにかかわらず、パラメータを持たない関数に対して、城に明示的に説明されていないタイプ-fthis-is-varialbleは伝統的なc++にそろっていると考えられ、thisを一般変数として使用することができる.-fcond-mismatchでは、条件式の2番目と3番目のパラメータタイプが一致しません.式の値はvoidタイプ-funsigned-char-fno-signed-char-fsigned-char-fsigned-char-fsigned-unsigned-charの4つのパラメータがcharタイプを設定します.charタイプをunsigned char(前の2つのパラメータ)またはsigned char(後の2つのパラメータ)-include fileに設定するコードを決定します.簡単に言えば、あるファイルで、別のファイルが必要な場合に設定できます.機能はコードで#includeを使用する例に相当します.gcc hello.c -include/root/pianopan.h-imacros file file file fileファイルのマクロをgcc/g++の入力ファイルに拡張し、マクロ定義自体は入力ファイルに現れない-DmacroはC言語の#define macro-Dmacro=defnはC言語の#define macro=defn-UmacroはC言語の#undef macroに相当する
    -undefは、非標準マクロの定義をキャンセルします.-dirは、#include"fileを使用している場合、gcc/g++は、現在のディレクトリで作成したヘッダファイルを検索します.見つからない場合は、デフォルトのヘッダファイルディレクトリに戻ります.-Iを使用してディレクトリを作成した場合は、作成したディレクトリで検索し、通常の順序で検索します.#includeの場合、gcc/g++は-Iが作成したディレクトリを検索し、検索できません.その後、システムのデフォルトのヘッダファイルディレクトリを-I-検索するのは前のパラメータを取り消す機能です.だから、一般的に-dirの後に-idirafter dirを使って-Iのディレクトリの中で検索に失敗し、このディレクトリの中で検索します.-iprefix prefix-iwithprefix dirは一般的に一緒に使用され、-Iのディレクトリの検索に失敗すると、prefix+dirの下で-nostdincを検索します.ただし、他のパスで検索する.このオプションは、創libg++ライブラリで-Cを使用して前処理する場合、コメント情報を削除せず、一般的に-Eと使用し、分析プログラムでは、この便利な-Mでファイル関連の情報を生成する場合があります.ターゲットファイルに依存するすべてのソースコードを含むgcc-M helloを使用できます.cテストしてみてください.簡単です.-MMは上記と同じですが、#includeによる依存関係は無視されます.-MDと-Mは同じですが、出力は.dのファイルの中で-MDと-MMは同じですが、出力は.dのファイルの中で-wa,optionこのオプションはoptionをアセンブリに渡します;optionの間にカンマがある場合は、optionを複数のオプションに分割し、アセンブラ-Wに渡す.optionこのオプションは、接続プログラムにoptionを渡します.optionの間にカンマがある場合は、optionを複数のオプションに分けて接続プログラムに渡す.  
    -llibraryコンパイル時に使用するライブラリの例の使い方gcc-lcurses hello.c ncursesライブラリコンパイラ-LDirを使用してコンパイルを作成する場合、ライブラリのパスを検索します.たとえば、独自のライブラリでは、ディレクトリを作成できます.そうしないと、コンパイラは標準ライブラリのディレクトリだけを探します.このdirはディレクトリの名前です.-O 0-O 1-O 2-O 3コンパイラの最適化オプションの4つのレベル、-O 0は最適化されていないことを示し、-O 1はデフォルト値であり、-O 3最適化レベルが最も高い-gはコンパイラであり、コンパイル時にデバッグ情報を生成する.-gstabsこのオプションはstabs形式でデバッグ情報を主張するが、gdbデバッグ情報は含まない.-gstabs+このオプションはstabs形式でデバッグ情報と称する、gdbのみで使用できる追加のデバッグ情報を含む.-ggdbこのオプションは、gdbの使用可能なデバッグ情報を可能な限り生成する.
    -staticこのオプションはダイナミックライブラリの使用を禁止するので、コンパイルされたものは、一般的に大きく、ダイナミック接続ライブラリも必要なく実行できます.
    -shareこのオプションは、できるだけダイナミックライブラリを使用するので、生成ファイルは小さいが、システムがダイナミックライブラリである必要がある.
    -traditionalは、コンパイラに従来のC言語の特性をサポートさせようとしています.
    あとに書く
    多くの内容はまだ使ったことがないので、後でゆっくり試してもいいです.