#author("2024-06-03T10:36:55+00:00","","") #author("2024-11-08T09:41:53+00:00","","") *gcc方面メモ [#a527a2c0] **C言語・C++について [#qa025ea0] -gcc / g++ / gdb 前提です。 ***ビルド [#r62ac8da] -hello.c (お約束のやつ) #highlightjs #include <stdio.h> int main(int argc, char *argv[]) { puts("hello!"); } -ビルド $ gcc -Wall -O3 -o ./hello hello.c -- -o オプションで出力ファイルを指定。なにもなければ ./a.out が出力される。 -- -W オプションは警告に関するオプション。 ---Wall = 構文に関する警告表示 ---Wextra = all以外の警告表示 ---Weverything = all + extra 全部警告に ---Werror = 警告はコンパイルエラーとして処理 -- -O (大文字のオー) は最適化具合。 ---O0 (オーゼロ) = 最適化しない。デフォルト。 ---O1~O3 = オースリーで最大の最適化。 ---Ofast = スピード重視最適化 ---Os = サイズ重視最適化 ***デバッグ [#p3816361] -ビルド方法 $ gcc -Wall -O0 -g -o ./hello hello.c --オプション -g -O0 をつけること。g がデバッグ情報付与、オーゼロは最適化オフ。 -デバッグ gdb (コマンドがなければ pacman や apt でインストールすること) $ gdb ./hello --デバッグコンソールになる。 : 以降は入力しないこと。 (gdb) break main : ブレイクポイントを main 関数にする run : ブレイクポイントまで実行 next : ステップ実行 continue : ブレイクポイントの先を一気に実行 quit : デバッグを抜ける --デバッグコンソールの他のコマンド list : ソースコードを表示 print : 変数の内容を表示 (print argc とか print argv[0] とかやるといい) whatis : 変数の型を表示 (whatis argc だと int whatis argv だと char**といったかんじで出る)