The Precompiled Binaries for Linux require GLIBC_2.38
(1) By Bob C (rchapman) on 2024-12-06 20:08:33 [source]
Frustrated by the failure of the successfully generated Makefile in the tea directory of SQLite 3.47.1 autoconfig distribution to compile the TEA Extension, I decided to try and restore my sanity by exploring the capabilities of the Precompiled Binaries for Linux found on the SQLite Download Page.
After Downloading and extracting the contents of sqlite-tools-linux-x64-3470100.zip I decided to query sqlite3 for its version with the following result:
$ ./sqlite3 --version
./sqlite3: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.38' not found (required by ./sqlite3)
$ cat /etc/debian_version
12.8
Bummer! The glibc version in the current Debian stable release (12.8 Bookworm) is 2.36
$ ldd --version
ldd (Debian GLIBC 2.36-9+deb12u9) 2.36
And the next major Debian release trixie (in test status without a projected release date) currently indicates glibc (2.40-4).
I fully understand and greatly appreciate that precompiled binaries are a gift to the community from someone who graciously donates their time and expertise. But it would be nice (and would have saved me from much disappointment) if any required dependencies (like the glibc minimum version) were clearly stated on the Download Page!!
(2) By Richard Hipp (drh) on 2024-12-06 20:45:43 in reply to 1 [link] [source]
Are you just trying to get an "sqlite3" CLI running on your Linux platform? If so, these are the steps: (See also the "Compiling for Unix-like systems" section of the README file: https://www.sqlite.org/src/doc/trunk/README.md.)
- Download the source tarball from https://sqlite.org/src/tarball/trunk/sqlite.tar.gz
- Unpack the tarball. CD into the top-level directory.
./configure --enable-all && make sqlite3
(3) By Bob C (rchapman) on 2024-12-06 22:39:53 in reply to 2 [link] [source]
Thank you for taking time to reply and for SQLite Dr Hipp.
Are you just trying to get an "sqlite3" CLI running on your Linux platform?
No. I have been trying to get the TCL Extension for SQLite 3.47.1. As reported in my previous Forum post "v 3.47.1 problem building the TCL extension". The generated Makefile in the 3.47.1 tea directory that has produced and installed it without problems for prior versions of SQLite fails when compiling the extension.
As suggested in the 3.47.1 tea README, I then downloaded and extracted the source tarball for version 3.47.1 and tried the tea READMEs configure - make suggestion [./configure --with-tclsh=/usr/bin/tclsh8.6] which produced error messages that seemed to be garbled and an exit 1.
In the replys to my previous post there seemed to be some indication that TCL9 was required for this process. Is that indeed a requirement for building SQLite from source? [Debian version 12.8 with Debian TCL 8.6.13 here]
(4) By Richard Hipp (drh) on 2024-12-06 22:59:56 in reply to 3 [link] [source]
trying to get the TCL Extension
Use the canonical source tarball, not the autoconf-tarball:
./configure --with-tclsh=PATH-TO-YOUR-TCLSH
make tclextension-install
At least, that is what I use, on all my machines (Linux, Mac, Windows, tclsh8.6 and tclsh9.0) and it seems to work for me without any problems.
(5.1) By Bob C (rchapman) on 2024-12-08 19:13:36 edited from 5.0 in reply to 4 [link] [source]
I aplogize for the delay in responding. Here in Oklahoma **fuhball** sometimes takes precedence over progress on Saturday.
As before, configure followed by make in the tea directory of sqlite-autoconf-3470200 terminates in error with the following result:
<command-line>: error: two or more data types in declaration specifiers
./generic/tclsqlite3.c:56:15: note: in expansion of macro ‘Tcl_Size’
56 | typedef int Tcl_Size;
| ^~~~~~~~
./generic/tclsqlite3.c:56:3: warning: useless type name in empty declaration
56 | typedef int Tcl_Size;
| ^~~~~~~
make: *** [Makefile:311: tclsqlite3.o] Error 1
Following your suggestion I downloaded the source tarball for check-in 2aabe05e (Version 3.47.2?) and perfored the suggested configure step with the following error result:
$ ../SQLite-2aabe05e/configure --with-tclsh=/usr/bin/tclsh8.6
. . . . . .
. . . . . .
checking for pread... yes
checking for pread64... yes
checking for pwrite... yes
checking for pwrite64... yes
using tclsh at "/usr/bin/tclsh8.6"
tclreadline::Loop: error. error in history expansion: ![file: event not found
tclsh reported library directory "/usr/lib/x86_64-linux-gnu" does not exist
/usr/bin/tclsh8.6 recommends the tclConfig.sh at DESKTOP-3Q38QFQ bld % #
DESKTOP-3Q38QFQ bld % # Run this TCL script to find and print the pathname for th
he tclConfig.sh
DESKTOP-3Q38QFQ bld % # file. Used by ../configure
DESKTOP-3Q38QFQ bld % #
DESKTOP-3Q38QFQ bld % if {[catch {
> set libdir [tcl::pkgconfig get libdir,install]
> }]} {
> puts stderr "tclsh too old: does not support tcl::pkgconfig"
> exit 1
> }
Although I was quite disappointed, I downloaded the tarball for check-in fc6904a5 (which I think was the tip of the trunk) and repeated the configure step ($ ../SQLite-fc6904a5/configure --with-tclsh=/usr/bin/tclsh8.6).
Much to my surprise it appeared to complete without error and produced the following files:
$ vdir
total 24
-rw-r--r-- 1 bchapman bchapman 3257 Dec 8 12:13 config.log
-r--r--r-- 1 bchapman bchapman 10365 Dec 8 12:13 Makefile
-r--r--r-- 1 bchapman bchapman 271 Dec 8 12:13 sqlite3.pc
-rw-r--r-- 1 bchapman bchapman 1437 Dec 8 12:13 sqlite_cfg.h
After this the make tclextension-install step seemed to complete normally.
. . . . . .
. . . . . .
installing /usr/share/tcltk/tcl8.6/sqlite3.48.0/pkgIndex.tcl
installing /usr/share/tcltk/tcl8.6/sqlite3.48.0/libsqlite3.48.0.so
and it appeared to install the TCL Extension for 3.48.0.
$ tclsh
% package require sqlite3
3.48.0
I have NO idea why your suggestion fails for the 3.47.2 source but seems to work for the fc6904a5 tip check-in source!
(6) By Richard Hipp (drh) on 2024-12-08 19:59:18 in reply to 5.1 [link] [source]
The whole configure/make system has been refactored (by Stephan) for the 3.48.0 release cycle. If it works in 3.48.0 but not in 3.47.2, that probably is due to some bug that Stephan fixed during the refactor.
(7) By Stephan Beal (stephan) on 2024-12-08 20:42:53 in reply to 6 [link] [source]
I have NO idea why your suggestion fails for the 3.47.2 source but seems to work for the fc6904a5 tip check-in source!
If it works in 3.48.0 but not in 3.47.2, that probably is due to some bug that Stephan fixed during the refactor.
FWIW, not intentionally - the goal was feature/bug parity ;).
(8) By Bob C (rchapman) on 2024-12-09 15:22:32 in reply to 6 [link] [source]
The whole configure/make system has been refactored (by Stephan) for the 3.48.0 release cycle.
[There is no way that I can express sufficient gratitude to Stephan (and the entire SQLite team) for all that is contributed to SQLite development.]
While I learned from your canonical source tarball -- ./configure --with-tclsh=PATH-TO-YOUR-TCLSH -- make tclextension-install -- suggestion, I'm always looking for the easy path and hope that the traditional configure -- make -- make install process in the tea directory once again works in the future 3.48.0 release!
I know -- If wishes were horses the world would be waist deep in horse sh... LOL
(9) By Daniel Dumitriu (danield) on 2024-12-09 15:32:41 in reply to 8 [link] [source]
With all due respect and understanding for "always looking for the easy path", I think this is - for want of a better word - unsympathetic towards the development team. You (or your curl
, FWIW) have to download 12 more megabytes and run a different command. You do want the team to focus on more important things, do you not?
(10.2) By Bob C (rchapman) on 2024-12-09 17:27:13 edited from 10.1 in reply to 9 [link] [source]
Thanks for your reply!
I refer you to my previous comment in case you missed my sincere expression of gratitude for the entire team's contributions!
[There is no way that I can express sufficient gratitude to Stephan (and the entire SQLite team) for all that is contributed to SQLite development.]