Я хочу изучить sqlite, прочитав его исходный код. Я обнаружил, что sqlite-1.0.1 содержит только 10 000 строк кода, возможно, его легко прочитать. Но, к сожалению, современный gcc не может скомпилировать 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
Когда я выдал 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>."
Я пытался добавить -std=c89
после gcc
в Makefile
, но это не сработало.
Я специально установил старую виртуальную машину Fedora Core версии 3 для компиляции SQLite-1.0.1, но в Fedora 3 она выглядит как gcc (gcc версия 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)) все еще слишком современен для кода 18 лет назад.
Я нашел чек в , который <varargs.h>
был заменен на <stdarg.h>
, и автор сказал, что, возможно, он использовал gcc для компиляции lemon.c
в 1989 году.
Может быть, очень старый gcc или Linux (до 2000 года) могут решить эту проблему, но как мне ее получить?