SQLite User Forum

tcl.h not found
Login

tcl.h not found

(1.1) Originally by anonymous with edits by Richard Hipp (drh) on 2024-08-06 14:45:39 from 1.0 [link] [source]

With the latest changes in configure/configure.ac the tcl.h file is not found anymore.

Preparation and make looks like this:

./configure --prefix=/opt/tcltk86 --mandir=/opt/tcltk86/share/man --enable-fts5 --enable-fts4 --enable-fts3 --enable-json1 --enable-rtree
make tclsqlite3.c


I see that my pipeline for https://gitlab.com/teclabat/tcltk is failing now:

/home/gitlab-runner/builds/yjW5e5sJx/0/product/tcltk/rcompile/sqlite3/src/tclsqlite.c:42:11: fatal error: tcl.h: No such file or directory
   42 | # include <tcl.h>          /* All normal cases */
      |           ^~~~~~~
compilation terminated.
make: *** [Makefile:1113: tclsqlite.lo] Error 1

(2) By Richard Hipp (drh) on 2024-08-06 14:49:21 in reply to 1.1 [source]

Maybe add one of these options?

  • --with-tcl=/opt/tcltk86/lib
  • --with-tclsh=/opt/tcltk86/bin/tclsh8.6

I don't think it is appropriate for ./configure to infer that your TCL installation is found at /opt/tcltk86 just because you set the --prefix to that directory, is it? Maybe it was doing that before, but I would consider that a bug that has now been fixed.

Perhaps somebody who understands autoconf better can correct me. But in the absence of such correction, I think the current behavior is correct.

(3) By Richard Hipp (drh) on 2024-08-06 20:01:53 in reply to 1.1 [link] [source]

I have implemented additional enhancements to ./configure. Please try again with a more recent check-in and report back whether or not you are still having trouble.

(4.1) By flavorjones on 2024-08-07 14:25:34 edited from 4.0 in reply to 3 [link] [source]

On Ubuntu 24.04, using 048a71ba (2024-08-06 23:09:37), I find that I now need to install the tcl-dev package, but once that's done I'm able to configure and build.

Edit: To clarify, tcl-dev is a new requirement, previously I've built sqlite fine on these images without it. Adding it is necessary to resolve this error:

checking for tclsh8.6... tclsh8.6
using tclsh at "tclsh8.6"
cannot find tclConfig.sh in either /usr/lib/x86_64-linux-gnu or /usr/lib/x86_64-linux-gnu/tcl8.6
configure: WARNING: tclsh8.6 is unable to recommend a tclConfig.sh
configure: error: cannot find a usable tclConfig.sh file.
      Use --with-tcl=DIR to specify a directory where tclConfig.sh can be found.
      SQLite does not use TCL internally, but TCL is required to build SQLite
      from canonical sources and TCL is required for testing.