前回、mkaeがこけてしまうという原因で、いくら調べてもそれらしいソースを眺めてもわからなかったのですが、mirさんに教えてもらった make cleanをしてからという方法で無事インストールが出来ました。
どうやら、g++が入っていない状態でのmakeしたゴミが残っていたようです。
気持ち悪いので、インストール用に解凍したディレクトリをごっそり削除し、tarファイルを再度解凍し、作業を行いました。
# ./configure --prefix=/usr/local/mysql
# make
# make install
今度は、無事に成功しました!
次に、mysqlのデーモンの起動。
今回はテストなので起動スクリプトなどは端折って直接起動します。
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
次に接続できるか確認
$ /usr/local/mysql/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.45-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
無事に接続完了しました~
次にソースを見るための cscopeというソフトの準備です。
まずは、ファイルのインデックスを作成します。
mysql-5.0.45のディレクトリに移動してから以下を実行
$ cscope-indexer ./
cscope: cannot find file /config.h
cscope: no source files found
ソースファイルが無いといわれます・・・
たしか・・・階層を再帰的に調べる必要があったなというのを思い出して、helpなどを確認し、以下を再実行
$ cscope-indexer -r ./
無事、インデックスファイルを作成できました。
以下のようなファイルが新規作成されていました。
$ ll
合計 34704
(略)
-rw-rw-r-- 1 maruta maruta 70386 11月 3 15:40 cscope.files
-rw-rw-r-- 1 maruta maruta 32038765 11月 3 15:40 cscope.out
(略)
早速、動かしてみます。
$ cscope
すると、こんな画面になります。
Find this C symbol: Find this global definition: Find functions called by this function: Find functions calling this function: Find this text string: Change this text string: Find this egrep pattern: Find this file: Find files #including this file: Find all function definitions: Find all symbol assignments:
一行目のFind this C symbol:のところにカーソルがあります。
これを、上下キーで各行に移り、そこで文字を入れて検索できるようです。
とりあえずなにをするか・・・
Find this file: まで上下キーで移動し、「select」と打ってEnterしてみます。
すると、上部の領域に以下のように出ました。
File: select
File
0 libmysqld/item_subselect.cc
1 libmysqld/sql_select.cc
2 ndb/test/ndbapi/slow_select.cpp
3 ndb/tools/select_all.cpp
4 ndb/tools/select_count.cpp
5 sql/item_subselect.cc
6 sql/item_subselect.h
7 sql/sql_select.cc
8 sql/sql_select.h
9 tests/select_test.c
a /usr/include/sys/select.h
b /usr/include/bits/select.h
どうやら、これがselectと名前の付くファイルのようです。
sql_select.ccという7番のファイルがそれっぽいです。
7の数字キーを押すか、上下キーで移動してからEnterを押すと、viでソースファイルが開きました。
MySQLのソースとご対面です!
何が書いてあるかさっぱり・・・・
結構な長さがありますが、とりあえず下までず~~~と眺めてみました。
次は、なにかお題を決めて取り組んでみたいと思います。
それと、Emacsと連動できるようにしてみたいと思います。
作業終わって、viを閉じた後、cscopeの終了方法がわかりません。。。
とりあえず、Ctrl+d で閉じちゃいました。
その後、ぐぐったらどうやら正しい閉じ方のようです。
http://docs.sun.com/source/806-4836/cscope.html