SQLiteのソースコードを読みながら、その絡繰を勉強したいんですが。DBの最も基本的な機能だけに興味があり、それに、[sqlite-1.0.1](https://www.sqlite.org/src/info/e8521fc10dcfa02f)
にはただ１万行くらいのソースコードがあるから、今多くのプロジェクトで応用されている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](https://www.sqlite.org/src/info/7902e4778ec86e25)があり、そして、SQLiteの作者は「1989年にgccを使って`lemon.c`をコンパイルしたのを覚えている」というコメントをそのcheck
inに書き留めました。

もしかして、もっと古いgccを探す必要でしょう。こういう古いものどこから入手できますか。19年前には、プログラマ達はどのようなOSやコンパイラを使っていましたか。
CC BY-SA 4.0
2019-05-01T01:11:36.613
54622
2019-09-11T12:03:10.400
2019-07-05T04:17:45.867
3060
30643
question
sqlite gcc
19年前にリリースされたsqlite-1.0.1はどのようにしてコンパイルしますか
とりあえずv1.0.1をビルドしたく、そして`<varargs.h>`が原因でビルドできず、`7902e477`で改善されていることが把握できているのであれば、[当該パッチ](https://www.sqlite.org/src/vpatch?from=e76787f877c456ab&to=7902e4778ec86e25)を適用してはどうでしょうか？
コメントが変更されているため前後３行無視してやることで適用できます。

```

    patch -F 3 < 7902e477.patch
    
```
CC BY-SA 4.0
2019-05-01T02:30:55.667
54623
2019-05-01T02:30:55.667
4236
54622
answer
Fedora Core release 3が 2004年リリースなので新しすぎるのかもしれませんね。  
当時は Slackware か Redhat が主流だった？と思いますので それらで試してみるのはどうでしょう。

<http://archive.download.redhat.com/pub/redhat/linux/>  
<https://mirrors.slackware.com/slackware/>

Redhatなら6.2、Slackwareなら 3.9～7.1 あたりがちょうど良さそうです。
CC BY-SA 4.0
2019-07-05T08:49:38.080
56416
2019-07-05T08:49:38.080
5008
54622
answer