19年前にリリースされたsqlite-1.0.1はどのようにしてコンパイルしますか
SQLiteのソースコードを読みながら、その絡繰を勉強したいんですが。DBの最も基本的な機能だけに興味があり、それに、sqlite-1.0.1 にはただ1万行くらいのソースコードがあるから、今多くのプロジェクトで応用されているsqlite3よりも読みやすいと思います。
残念なことに、今のgccでは、19年前のsqlite-1.0.1がコンパイルできないようです。
wget "https://www.sqlite.org/src/tarball/e8521fc1/SQLite-e8521fc1.tar.gz"
tar xzvf SQLite-e8521fc1.tar.gz
mkdir bld && cd bld
../SQLite-e8521fc1/configure --prefix=/opt/sqlite-1.0.1 --with-tcl=no
make
仮想コンピュータによって、古いFedora Core release 3をインストールして、ビルトインのgcc(gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3))でsqlite-1.0.1をコンパイルしてみたが、make
を実行すると、以下のエラーメッセージが表示されます。
gcc -std=c89 -g -O2 -o lemon ../SQLite-e8521fc1/tool/lemon.c
In file included from ../SQLite-e8521fc1/tool/lemon.c:29:
/usr/lib/gcc/i386-redhat-linux/3.4.2/include/varargs.h:4:2: #error "GCC no longer implements <varargs.h>."
/usr/lib/gcc/i386-redhat-linux/3.4.2/include/varargs.h:5:2: #error "Revise your code to use <stdarg.h>."
Makefile
では、-std=c89
をgcc
のパラメータとして追加してみたが、またコンパイルできません。
上記のエラーメッセージからして、gcc version 3.4.2はsqlite-1.0.1にとって、現代的なコンパイラであるかもしれません。
<varargs.h>
が<stdarg.h>
に取り替えられたcheck inがあり、そして、SQLiteの作者は「1989年にgccを使ってlemon.c
をコンパイルしたのを覚えている」というコメントをそのcheck inに書き留めました。
もしかして、もっと古いgccを探す必要でしょう。こういう古いものどこから入手できますか。19年前には、プログラマ達はどのようなOSやコンパイラを使っていましたか。