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
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 を使って色々見てみたいと思います.
2020年3月29日 Perl