#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**といったかんじで出る)

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS