首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编译18年前发布的sqlit-1.0.1

如何编译18年前发布的sqlit-1.0.1
EN

Stack Overflow用户
提问于 2019-04-22 08:30:23
回答 1查看 172关注 0票数 2

我想通过阅读它的源代码来研究sqlite。我发现sqlite-1.0.1只包含10,000+行代码,可能很容易读懂。但不幸的是,现代gcc无法编译sqlitt-1.0.1。

代码语言:javascript
复制
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时,它报告说

代码语言:javascript
复制
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版本3虚拟机来编译SQLite-1.0.1,但是它看起来像Fedora 3中的gcc版本3.4.2 20041017 (RedHat3.4.2-6.fc3),对于18年前的代码来说仍然太现代了。

我发现了一个办理入住<varargs.h><stdarg.h>取代了,作者说他可能在1989年用gcc编译了lemon.c

也许一个非常老的gcc或Linux (2000年以前)能够解决这个问题,但我如何才能得到这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2022-04-28 17:00:40

我已经修改了sqlit1.0.1的代码,现在可以在fedora 36 & MacOS 12.3上成功地编译和运行。您可以在github上找到这段代码。它可以在码头编译如下。(注:您也可以使用gcc代替clang)。

代码语言:javascript
复制
docker pull fedora:36
docker run -dt --name f36 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined fedora:36
docker exec -it f36 bash
dnf update -y
dnf install -y ncurses git hostname clang diffutils readline-devel tcl-devel gdbm-devel
mkdir ~/src && cd ~/src
git clone https://github.com/ruomeng0x/sqlite.git
cd ~/src/sqlite
git checkout badcc1d968fdb7cf0ff5d89468248468b8329f4e
mkdir ../build && cd ../build
CC=clang CFLAGS="-std=c89" bash ../sqlite/configure
make
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55791432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档