SQLite User Forum

3.50.00 build error with --disable-static-shell
Login

3.50.00 build error with --disable-static-shell

(1) By Lonnie Abelbeck (abelbeck) on 2025-05-29 20:03:59 [source]

Previously sqlite-autoconf-3490100, with --disable-static-shell, cross-compiled and worked fine.

Now with sqlite-autoconf-3500000, with --disable-static-shell, I see: undefined reference to symbol 'floor@@GLIBC_2.2.5'

With --disable-static-shell, "build/sqlite-3500000/shell.c -L. -lsqlite3 -lz" is built separately.

But starting with 3.49.02, shell.c now calls "floor()" which needs -lm
sqlite-autoconf-3490200/shell.c:6724:          if( (idxNum & 0x2000)!=0 && r==floor(r) ){
sqlite-autoconf-3490200/shell.c:6727:            iMax = (sqlite3_int64)floor(r);

I fixed the build problem with this patch:
--- sqlite-3500000/Makefile.in.orig	2025-05-29 14:01:21.483771560 -0500
+++ sqlite-3500000/Makefile.in	2025-05-29 14:01:48.412516227 -0500
@@ -224,7 +224,7 @@
 #
 ENABLE_STATIC_SHELL = @ENABLE_STATIC_SHELL@
 sqlite3-shell-link-flags.1 = $(TOP)/sqlite3.c $(LDFLAGS.libsqlite3)
-sqlite3-shell-link-flags.0 = -L. -lsqlite3 $(LDFLAGS.zlib)
+sqlite3-shell-link-flags.0 = -L. -lsqlite3 $(LDFLAGS.zlib) $(LDFLAGS.math)
 sqlite3-shell-deps.1 = $(TOP)/sqlite3.c
 sqlite3-shell-deps.0 = $(libsqlite3.DLL)
 #

This builds with: "build/sqlite-3500000/shell.c -L. -lsqlite3 -lz -lm" and works.

Is this the proper fix?

(2.1) By Stephan Beal (stephan) on 2025-05-29 20:34:48 edited from 2.0 in reply to 1 [link] [source]

Is this the proper fix?

That is indeed, thank you very much for saving me the effort of tracking that down :).

That is now fixed on the trunk and the 3.49/3.50 branches.