naru.jpn.com/wordpress

Programming, Computing etc.

macOS CatalinaでPerl5をデバッグ情報付きでビルドする

ソースコードの取得からPerlプログラムの実行まで.

コードの取得

まずはソースコードを持ってきて解凍します.

$ wget https://www.cpan.org/src/5.0/perl-5.31.9.tar.gz
$ tar -xzf perl-5.31.9.tar.gz
$ cd perl-5.31.9

Makefileの生成

Configure を実行すると, Makefile が生成されます.

ここでオプションを渡すことによってコンパイルオプション等を変更することができます. Configure のオプション等については, perl5/INSTALL に詳しい説明があります.

$ ./Configure -des -Dusedevel -DDEBUGGING=-g -Doptimize=-O0 -Dprefix=/Users/naru/repo/perl/perl-5.31.9/output

-Doptimize を指定しないと -O3 の最適化オプションが付いてしまい, のちに lldb で細かい情報が見れなくなってしまうので, ここでは -O0 を指定しています. -Dprefix で指定した先に bin などのディレクトリができて成果物が入ります. お好みのパスを指定してください.

ビルド

$ make

テスト

make したら test してね, と言われるのでやってみましょう.

$ make test

2.9GHz の MacBook Pro で12分強かかりました. そして何かが失敗した.

Failed 1 test out of 2467, 99.96% okay.
  porting/podcheck.t

このテストを通すためには…という説明が長々と出力されますが, ひとまず見なかったことにしました.

インストール

諸々インストール.

$ make install

今回の設定だと,

/Users/naru/repo/perl/perl-5.31.9/output/bin/perl5.31.9

に実行可能なファイルが置かれます.

確認

$ ./output/bin/perl5.31.9 -V

を実行して, コンパイラオプションがちゃんと指定できていたか確認してみます.

Summary of my perl5 (revision 5 version 31 subversion 9) configuration:
  ...
  Compiler:
    ...
    optimize='-O0 -g'

できているみたい.

簡単なプログラムを実行してみます.

print "start loop program.\n";
while (1) {
  print "loop.\n";
  sleep(1);
}
$ ./output/bin/perl5.31.9 ./sample.pl
start loop program.
loop.
loop.
loop.

次は lldb を使って色々見てみたいと思います.

参考にさせていただいたサイト

Perl自体をソースコードからコンパイルする方法
perlのデバッグビルド