(旧:システムオペレータの週末)2018-09-23知っておくべきgccオプション三連休で何かしないとな、とおもいgccのmanページを読んでいた。結局1日では時間が足りず中途半端な感じになってしまった。1日無駄にしたなーなんて思う。分かったことだけでもまとめとこうと思う。今日gccのmanページを読もうと思った理由は、なんとなくgcc極めたいなーと思ったからだ。先頭から読み始めたが、正直これ通常の開発とかで使うのだろうか・・・と思ったころにはもう夕方だった。ページの先頭に戻ってみたらSYNOSPSISを改めてみてみると、これだけ知ってれば十分じゃないか?と気づいたわけだ。結論はタイトルの通りだと思った。コンパイラのオプションってほんとに多い。Studioを初めて触ったとき、デフォルトでいろんなオプションが設定されていて意味が分からなかった。Studioのコンパイルオプションは正直いまでも詳しくはわからない。半面、gccはコマンドラインからソースファイルさえ指定すればそれらしくできるからとてもシンプルに見える。実際は内部でいろんなパラメータが設定されているんだろうが・・・・。gccで表示したmanページのSYNOPSISに書かれているgccの例。gccのオプションはもっとたくさんあるがこれだけ知っていればいいのでは、というのが今日の結論だ。それぞれのオプションがどういう意味なのか簡単に残しておくことにする。]オプションコンパイルの実行を制御するオプション。-cはプリプロセス、コンパイル、アセンブルをするがリンクはスルーする。-Sはプリプロセス、コンパイルを行うがアセンブル、リンクをスルーする。-Eはプリプロセスはするがコンパイル、アセンブル、リンクをスルーする。-cはオブジェクトファイルを出力し、-Sはアセンブラコードを出力し、-Eはプリプロセス済みのソースコードを出力する。まとめると以下の表になる。-Eのみ、出力がファイルではなく標準出力になることに注意する。]オプションC99など、C言語で準拠する規格を指定する。プロジェクトで準拠する規格があれば指定する必要がありそう。C/C++のみに適用可能なオプション。]オプションデバッグ情報を出力する。GDBを使う場合にこのデバッグ情報を使用する。]オプションgprofでプログラムを解析する際に使用するプロフィール情報を出力する。]オプション-O1や-O3などでコンパイルで最適化するレベルを指定する。Options)を指定してくれているらしい。]オプション表示する警告の設定。-Wallなどがよく使われているイメージ。]オプション拡張機能に対して警告を表示する設定。]オプションdirに指定したディレクトリをヘッダファイルなどの検索対象に追加する。]オプションdirに指定したディレクトリを、リンクしたいライブラリの検索対象に追加する。]オプション#defineをコマンドラインで設定する。]オプション定義済みのマクロをキャンセルする。ソースコード中のマクロまたは、このオプションの前に-Dで定義したマクロのキャンセルができる。]オプション指定するとoptionを有効にする。いろんなオプションがある。]オプションハードウェア固有のオプションを有効にする。]オプション出力ファイル名を指定する。指定しないとa.outなどになる。]コマンドラインオプションをファイルから読み取る場合に、コマンドラインオプションが記述されたファイルを指定する。infile...入力ファイルを指定する。このベースさえ覚えておけば、あとはmanなりhelpなりを都度参照すれば何とかなりそう。-foptionとか-mmachine-optionはハードやソフトに何らかの制約がある場合に指定すると思うので、その都度調べて使うような使い方になりそう。あとはどれだけ便利に使いたいか、というくらいじゃないだろうか。掘り下げていくといくらでも掘り下げられそうだ。23:00知っておくべきgccオプションTweet広告を非表示にする関連記事2016-04-11WindowsでVimが勝手に作成する4つのファイルを作成されないようにするには。先日、Vagrantを始めた記事をあげました。momoiro-tj.hateblo....2016-04-09Vagrant始めました。Vagrant使ってますか?←一回使ってみたかった。私は今まで手動...2016-03-07【VBA】1行でExcelのいろんなインターフェースを非表示にする。