「インストール - GDB」の版間の差分
| (同じ利用者による、間の11版が非表示) | |||
| 11行目: | 11行目: | ||
== 依存関係のライブラリのインストール == | == 依存関係のライブラリのインストール == | ||
==== パッケージ管理システムの使用 ==== | |||
GDBの依存関係のライブラリをインストールする。<br> | GDBの依存関係のライブラリをインストールする。<br> | ||
# | # RHEL | ||
sudo | sudo dnf install bison m4 flex gawk wget make texinfo gcc gcc-c++ python3-devel \ | ||
xz-devel xxhash-devel gmp-devel mpfr-devel mpc-devel isl-devel | |||
# SUSE | # SUSE | ||
sudo zypper install bison m4 flex gawk gcc gcc-c++ | sudo zypper install bison m4 flex gawk wget texinfo make gcc gcc-c++ python3-devel \ | ||
xz-devel xxhash-devel gmp-devel mpfr-devel mpc-devel isl-devel | |||
<br> | <br> | ||
<u> | ==== Texinfoを手動でインストールする場合 ==== | ||
<u>Texinfoをパッケージ管理システムを使用してインストールする場合は膨大な時間が掛かるため、手動でインストールしてもよい。</u><br> | |||
# まず、Texinfoの[https://ftp.gnu.org/gnu/texinfo/ 公式Webサイト]から、Texinfoをダウンロードする。 | # まず、Texinfoの[https://ftp.gnu.org/gnu/texinfo/ 公式Webサイト]から、Texinfoをダウンロードする。 | ||
# 次に、Texinfoを解凍して、Texinfoディレクトリ直下にbuildディレクトリを作成する。 | # 次に、Texinfoを解凍して、Texinfoディレクトリ直下にbuildディレクトリを作成する。 | ||
#: < | #: <pre>mkdir build</pre> | ||
# Texinfoをビルドおよびインストールするため、以下のコマンドを実行する。 | # Texinfoをビルドおよびインストールするため、以下のコマンドを実行する。 | ||
#: < | #: <syntaxhighlight lang="text"> | ||
../configure --prefix=/<Texinfoのインストールディレクトリ> | |||
make -j $(nproc) | |||
# . | make TEXMF=/<Texinfoのインストールディレクトリ>/texmf | ||
#: < | install-tex | ||
make install | |||
</syntaxhighlight> | |||
# ~/.profileファイル等に、以下に示す環境変数を設定する。 | |||
#: <syntaxhighlight lang="sh"> | |||
export PATH="/<Texinfoのインストールディレクトリ>/bin:$PATH" | |||
export LD_LIBRARY_PATH="/<Texinfoのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH" | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
== GDBのインストール == | == GDBのインストール == | ||
==== 共通 ==== | |||
[https://ftp.gnu.org/gnu/gdb/ GDBの公式Webサイト]から、GDBのソースコードをダウンロードする。<br> | [https://ftp.gnu.org/gnu/gdb/ GDBの公式Webサイト]から、GDBのソースコードをダウンロードする。<br> | ||
または、以下のコマンドを実行してダウンロードする。<br> | または、以下のコマンドを実行してダウンロードする。<br> | ||
| 45行目: | 56行目: | ||
<br> | <br> | ||
<u>※注意</u><br> | <u>※注意</u><br> | ||
<u>Qt | <u>Qt Creatorにおいて、ユーザが個別にインストールしたGDBを使用する場合は、</u><br> | ||
<u> | <u>GDBをコンパイルする時に、以下に示すように、Pythonの実行ファイルとライブラリのパスを指定する必要がある。</u><br> | ||
[ -z "$PYTHON" ] && export PYTHON=<Python3の実行ファイルのフルパス>; \ | [ -z "$PYTHON" ] && export PYTHON=<Python3の実行ファイルのフルパス>; \ | ||
export PYTHON_LIBDIR=$("$PYTHON" -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))") | export PYTHON_LIBDIR=$("$PYTHON" -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))") | ||
例. | 例. | ||
[ -z "$PYTHON" ] && export PYTHON=$HOME | [ -z "$PYTHON" ] && export PYTHON=$HOME/Python/bin/python3.8; \ | ||
export PYTHON_LIBDIR=$("$PYTHON" -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))") | export PYTHON_LIBDIR=$("$PYTHON" -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))") | ||
<br> | <br> | ||
==== ネイティブ向け ==== | |||
GDBをビルドおよびインストールする。<br> | |||
../configure --prefix="$HOME/InstallSoftware/GDB/GDB-<バージョン名>" \ | ../configure --prefix="$HOME/InstallSoftware/GDB/GDB-<バージョン名>" \ | ||
--with-python="$ | --with-python="$PYTHON" LDFLAGS="-L$PYTHON_LIBDIR" \ | ||
--program-suffix=<サフィックス 例. _12_1> # 必要であれば、パッケージ管理システムのGDBと名前が重複しないようにすることも可能 | --program-suffix=<サフィックス 例. _12_1> # 必要であれば、パッケージ管理システムのGDBと名前が重複しないようにすることも可能 | ||
# AArch64 | make -j $(nproc) | ||
make install # 全てインストールする場合 | |||
# または | |||
make -C gdb install # 最小限のGDBのみインストールする場合 | |||
<br> | |||
==== AArch64 クロスコンパイラ向け ==== | |||
GDBをビルドおよびインストールする。<br> | |||
export PATH="/<AArch64向けBinutisおよびAArch64向けGCCのインストールディレクトリ>/bin:$PATH" && \ | export PATH="/<AArch64向けBinutisおよびAArch64向けGCCのインストールディレクトリ>/bin:$PATH" && \ | ||
../configure --prefix=<AArch64クロスコンパイラ向けGCCのインストールディレクトリ> \ | ../configure --prefix=<AArch64クロスコンパイラ向けGCCのインストールディレクトリ> \ | ||
--build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=aarch64 | --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=aarch64-linux-gnu \ | ||
--with-python="$PYTHON" LDFLAGS="-L$PYTHON_LIBDIR -static-libstdc++" \ | --with-python="$PYTHON" LDFLAGS="-L$PYTHON_LIBDIR -static-libstdc++" \ | ||
--disable-multilib --disable-nls \ | --disable-multilib --disable-nls \ | ||
| 71行目: | 89行目: | ||
--program-suffix=<サフィックス 例. _12_1> # 複数のGDBと名前が重複しないようにすることも可能 | --program-suffix=<サフィックス 例. _12_1> # 複数のGDBと名前が重複しないようにすることも可能 | ||
# H8/300 | make -j $(nproc) | ||
make install # 全てインストールする場合 | |||
# または | |||
make -C gdb install # 最小限のGDBのみインストールする場合 | |||
<br> | |||
==== H8/300 クロスコンパイラ向け ==== | |||
GDBをビルドおよびインストールする。<br> | |||
export PATH="/<AArch64向けBinutisおよびAArch64向けGCCのインストールディレクトリ>/bin$PATH" && \ | export PATH="/<AArch64向けBinutisおよびAArch64向けGCCのインストールディレクトリ>/bin$PATH" && \ | ||
../configure --prefix=<AArch64クロスコンパイラ向けGCCのインストールディレクトリ> \ | ../configure --prefix=<AArch64クロスコンパイラ向けGCCのインストールディレクトリ> \ | ||
| 87行目: | 112行目: | ||
make -C gdb install # 最小限のGDBのみインストールする場合 | make -C gdb install # 最小限のGDBのみインストールする場合 | ||
<br> | <br> | ||
==== パスの設定 ==== | |||
必要に応じて、~/.profileファイル等に環境変数を設定する。<br> | 必要に応じて、~/.profileファイル等に環境変数を設定する。<br> | ||
<syntaxhighlight lang="sh"> | |||
export PATH="/<GDBのインストールディレクトリ>/bin:$PATH" | export PATH="/<GDBのインストールディレクトリ>/bin:$PATH" | ||
export LD_LIBRARY_PATH="/<GDBのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH" | export LD_LIBRARY_PATH="/<GDBのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH" | ||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
== 警告およびエラー == | == 警告およびエラー == | ||
以下に示すような警告が出力される場合がある。<br> | 以下に示すような警告が出力される場合がある。<br> | ||
warning: File "/ | warning: File "/path/to/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load". | ||
<br> | <br> | ||
この時、~/.gdbinitファイルを作成して、以下の設定を記述する。<br> | この時、~/.gdbinitファイルを作成して、以下の設定を記述する。<br> | ||
| 107行目: | 135行目: | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ: | [[カテゴリ:RHEL]][[カテゴリ:SUSE]] | ||
2025年12月23日 (火) 00:35時点における最新版
概要
GDBとは、UNIX系OSで標準的に利用されるデバッガの1つである。
実行形式のファイルを指定して起動すると、プログラムの実行を開始して、実行状態の監視や介入が可能となる。
特定の時点における変数などの値の表示や代入、特定の位置を指定して実行を停止(ブレークポイント)、
1命令ずつ停止させて実行(ステップ実行)等の機能を、対話的なコマンドラインインターフェースで利用することができる。
また、GDBを直接介した実行だけでなく、OS上で既に実行されているプロセスを指定して制御する(アタッチする)こともできる。
別のコンピュータ上で実行されているプログラムをデバッグする遠隔モードもあるため、組み込みソフトウェアの開発やLinuxカーネル開発などにも用いられる。
依存関係のライブラリのインストール
パッケージ管理システムの使用
GDBの依存関係のライブラリをインストールする。
# RHEL
sudo dnf install bison m4 flex gawk wget make texinfo gcc gcc-c++ python3-devel \
xz-devel xxhash-devel gmp-devel mpfr-devel mpc-devel isl-devel
# SUSE
sudo zypper install bison m4 flex gawk wget texinfo make gcc gcc-c++ python3-devel \
xz-devel xxhash-devel gmp-devel mpfr-devel mpc-devel isl-devel
Texinfoを手動でインストールする場合
Texinfoをパッケージ管理システムを使用してインストールする場合は膨大な時間が掛かるため、手動でインストールしてもよい。
- まず、Texinfoの公式Webサイトから、Texinfoをダウンロードする。
- 次に、Texinfoを解凍して、Texinfoディレクトリ直下にbuildディレクトリを作成する。
mkdir build
- Texinfoをビルドおよびインストールするため、以下のコマンドを実行する。
../configure --prefix=/<Texinfoのインストールディレクトリ> make -j $(nproc) make TEXMF=/<Texinfoのインストールディレクトリ>/texmf install-tex make install
- ~/.profileファイル等に、以下に示す環境変数を設定する。
export PATH="/<Texinfoのインストールディレクトリ>/bin:$PATH" export LD_LIBRARY_PATH="/<Texinfoのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH"
GDBのインストール
共通
GDBの公式Webサイトから、GDBのソースコードをダウンロードする。
または、以下のコマンドを実行してダウンロードする。
wget https://ftp.gnu.org/gnu/gdb/gdb-<バージョン名>.tar.xz
ダウンロードしたファイルを解凍して、解凍したディレクトリに移動する。
tar xf gdb-<バージョン名>.tar.xz cd gdb-<バージョン名>
ビルドディレクトリを作成する。
mkdir build && cd build
※注意
Qt Creatorにおいて、ユーザが個別にインストールしたGDBを使用する場合は、
GDBをコンパイルする時に、以下に示すように、Pythonの実行ファイルとライブラリのパスを指定する必要がある。
[ -z "$PYTHON" ] && export PYTHON=<Python3の実行ファイルのフルパス>; \
export PYTHON_LIBDIR=$("$PYTHON" -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))")
例.
[ -z "$PYTHON" ] && export PYTHON=$HOME/Python/bin/python3.8; \
export PYTHON_LIBDIR=$("$PYTHON" -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))")
ネイティブ向け
GDBをビルドおよびインストールする。
../configure --prefix="$HOME/InstallSoftware/GDB/GDB-<バージョン名>" \
--with-python="$PYTHON" LDFLAGS="-L$PYTHON_LIBDIR" \
--program-suffix=<サフィックス 例. _12_1> # 必要であれば、パッケージ管理システムのGDBと名前が重複しないようにすることも可能
make -j $(nproc)
make install # 全てインストールする場合
# または
make -C gdb install # 最小限のGDBのみインストールする場合
AArch64 クロスコンパイラ向け
GDBをビルドおよびインストールする。
export PATH="/<AArch64向けBinutisおよびAArch64向けGCCのインストールディレクトリ>/bin:$PATH" && \
../configure --prefix=<AArch64クロスコンパイラ向けGCCのインストールディレクトリ> \
--build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=aarch64-linux-gnu \
--with-python="$PYTHON" LDFLAGS="-L$PYTHON_LIBDIR -static-libstdc++" \
--disable-multilib --disable-nls \
--with-sysroot=<ターゲットのシステムルートディレクトリ> \ # 不要の可能性あり
CFLAGS="-g0 -O3 -fstack-protector-strong" \ # 不要の可能性あり
CXXFLAGS="-g0 -O3 -fstack-protector-strong" \ # 不要の可能性あり
--program-suffix=<サフィックス 例. _12_1> # 複数のGDBと名前が重複しないようにすることも可能
make -j $(nproc)
make install # 全てインストールする場合
# または
make -C gdb install # 最小限のGDBのみインストールする場合
H8/300 クロスコンパイラ向け
GDBをビルドおよびインストールする。
export PATH="/<AArch64向けBinutisおよびAArch64向けGCCのインストールディレクトリ>/bin$PATH" && \
../configure --prefix=<AArch64クロスコンパイラ向けGCCのインストールディレクトリ> \
--build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=h8300-elf \
--with-python="$PYTHON" LDFLAGS="-L$PYTHON_LIBDIR -static-libstdc++" \
--disable-multilib --disable-nls \
CFLAGS="-g0 -O3 -fstack-protector-strong" \ # 不要の可能性あり
CXXFLAGS="-g0 -O3 -fstack-protector-strong" \ # 不要の可能性あり
--program-suffix=<サフィックス 例. _12_1> # 複数のGDBと名前が重複しないようにすることも可能
make -j $(nproc)
make install # 全てインストールする場合
# または
make -C gdb install # 最小限のGDBのみインストールする場合
パスの設定
必要に応じて、~/.profileファイル等に環境変数を設定する。
export PATH="/<GDBのインストールディレクトリ>/bin:$PATH"
export LD_LIBRARY_PATH="/<GDBのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH"
警告およびエラー
以下に示すような警告が出力される場合がある。
warning: File "/path/to/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
この時、~/.gdbinitファイルを作成して、以下の設定を記述する。
vi ~/.gdbinit
# ~/.gdbinitファイル set auto-load safe-path . # ディレクトリごとに.gdbinitファイルを読み込む場合 # または set auto-load safe-path / # システム上のどこからでも.gdbinitファイルを読み込むする場合