2011|08|
2013|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|05|06|07|08|09|10|11|12|
2016|01|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|

2014-03-26 GCC+Meadow+GDBの環境構築に成功 [長年日記]

0.前提条件

■Meadow(私の場合は3.0)がインストールされていること。

1.背景と狙い

■今後、簡単な数値シミュレーションのニーズが増えそうであり、できるだけ軽いプログラミング環境を作っておきたかった。

■とにかく軽くて、どのプラットフォームでも使えて、そして、もうこれ以上、私は、プログラミングの勉強をしたくなかった(C++でラストにしたい)。

■GUIなんぞには興味はなく、I/O系を使うこともないだろう(せいぜいsocketI/Oが条件)。またJava VMやJava開発環境は、私には正直「分からん」

■Perl, Rubyのスクリプト言語が良いことは良く理解しているが、知らない使い方を、その都度調べるのが面倒。

2.目的

■結局、UNIXの創世記から存在し、殆どのプラットフォームで利用可能で、今なお健在のGNU C Compiler(GCC)が、私には一番ラク。

■これをMeadow上のGDBの環境で使えれば、それで、私にはパラダイス。

3.開発環境構築

■「Windowsレジストリに登録されない」との一言で、cygwinをやめて、mingwにすることに決定。これならUSBメモリで開発環境を持ち歩ける(らしい)

(Step.1)http://sourceforge.net/projects/mingw/files/Installer/mingw-get/ ここ からダウンロードしてくる。私は、今回は「mingw-get-0.4-mingw32-alpha-1-bin.zip」をダウンロードした。

(Step.2)解凍するとディレクトリができるが、ディレクトリのトップが長いファイル名のままなので、"MigGW"などに替えて、C:\Users\ebata\mingwにもってきた。

(Step.3)C:\Users\ebata\mingw\binをpathを設定する。

(Step.4)C:\Users\ebata\mingw\binに移動して、"mingw-get list"と入力(時間がかかる)

(Step.5)mingw-get install gcc g++ mingw32-make

(Step.6)mingw-get install msys-base

(Step.7)mingw-get install gdb

(2016/04/04加筆)

スレッドプログラミングが行いたい場合は、以下を追加。

(Step.8)mingw-get install mingw32-libpthreadgc

(Step.9)mingw-get install mingw32-libpthreadgce

(Step.10)mingw-get install mingw32-pthreads-w32

(どれか1つは失敗したような気がするが忘れた)

このままpthreadのプログラムのコンパイルを試みると、

"c:\mingw\include\pthread.h:320:8: error: redefinition of 'struct timespec'"

などと喧しく言われることがある。

面倒くさかったので、C:\mingw\include\parts の time.hの、struct timespec をまるごとコメントアウトしたらコンパイルが通った

(2016/04/04加筆ここまで)

私の場合、Meadow側の設定は不要だった。

4.実行環境

==============================

#include

int main ()

{

printf("Hello, world\n");

printf("2:Hello, world\n");

printf("3:Hello, world\n");

}

==============================

を、test.c と名前を入れて、

gcc -g test.c でコンパイル。

M-x gdbと入力すると、多分"gdb --annotate=3 a.exe"と表示されるので、そのままデバック環境を実行。ソースコードと連動して動く(あたりまえだが、20年前の環境が再現されて感動する)。

5.主要な操作

基本的には、ブレークポイントを設定してrunをする。

■ソースコート上でブレークポイントのセット

c-x space

■ソースコート上でブレークポイントの削除

該当行で C-x C-a C-d

ブレークポイントバッファの該当箇所で D(大文字)

マウスのクリックでも可能。

■n,sでステップ毎に進む。

以上