Source Organization | Installed Files | Compiling on UNIX | Compiling on Windows | Compiling on Macintosh
This page provides a "how to" guide for compiling Tcl from a source distribution. Tcl has been ported to a wide variety of platforms, and compilation has been made easier through GNU autoconf on UNIX.
Before trying to compile Tcl, you may wish to check if a binary distribution is already available for your platform.
Source Code Organization
Each Tcl component has its source organized into the following structure, which is illustrated in the figure below:
Installed Software Organization
When you install Tcl, it ends up in a different organization that supports an installation for multiple operating systems and machine types. You can define architecture-specific subdirectories (e.g., solaris-sparc) that contain programs and binary object files for that platform. The directory structure also supports installation of various Tcl extensions so they can be automatically found by the Tcl shell programs. For example, any subdirectory of the install/lib directory is searched for Tcl script packages, and any shared libraries in the architecture-specific lib directory can be dynamically loaded into the Tcl shells.
After installation, Tcl files are kept in the following structure:
Configuring and Compiling on UNIX
Compiling Tcl on UNIX has two steps: configure and make. In the simplest case you type the following commands to your shell:
cd tcl8.5.0/unix configure options make make test make install
The configure script tests your system for different compilation and linking options and generates a Makefile. The configure script is created by GNU autoconf. There are two commonly-specified configure options:
Note: be sure to use only absolute path names (those starting with "/")
To install into the directories /home/user/tcl/bin and /home/user/tcl/lib, for example, you should configure with:
Tcl's configure supports several options in addition to the standard
If you wish to specify a particular compiler, set the
Configuring for multiple architectures
Suppose you are building for two platforms, Linux and Solaris, and
your installation will be shared by both kinds of hosts. You'll want
to use the
There are two ways you can build for multiple platforms. The
first way is to build both platforms in the
You can also build the different platforms in different
subdirectories of the
cd /home/user/src/tcl8.5.0/unix mkdir solaris cd solaris /home/user/src/tcl8.5.0/unix/configure \ --prefix=/usr/local \ --exec-prefix=/usr/local/solaris-sparc
When you configure Tk you may need to tell it where Tcl was built
cd /home/user/src/tk8.5.0/unix mkdir solaris cd solaris /home/user/src/tk8.5.0/unix/configure \ --with-tcl=/home/user/src/tcl8.5.0/unix/solaris \ --prefix=/usr/local \ --exec-prefix=/usr/local/solaris-sparc
Building with Make
After you configure your Makefile, type "make". This will create
a library archive called
Type "make test" to run an exhaustive test suite. In most cases
there should not be test failures. The Tk test suite, however, does
have some tests that depend on font metrics and the window manger,
which can vary across platforms. The
Type "make install" to install Tcl binaries and script files in
the directories you specified with
If you have trouble compiling Tcl, check out the platforms list. This is an on-line database of porting information. We make no guarantees that this information is accurate, complete, or up-to-date, but you may find it useful. If you get Tcl running on a new configuration, we would be happy to receive new information to add to the database. We're also interested in hearing how to change the configuration setup so that Tcl compiles out of the box on more platforms.
Compiling on Windows
In order to compile Tcl for Windows, you need the following items:
In order to build the executables, type the following commands in a command shell.
nmake -f makefile.vc INSTALLDIR=path_to_your_install_dir nmake -f makefile.vc install INSTALLDIR=path_to_your_install_dir
The built files will be named
Compiling Tk for windows follows a similar process. You must
compile Tcl before you compile Tk and in addition you must set
nmake -f makefile.vc INSTALLDIR=path_to_your_install_dir TCLDIR=path_to_tcl_source nmake -f makefile.vc install INSTALLDIR=path_to_your_install_dir TCLDIR=path_to_tcl_source
This will produce a
If you are compiling a Tcl extension for windows, please see the TEA reference.
Compiling for Macintosh
Tcl 8.4 was the last version to support Mac Classic (OS <= 9). See the READMEs in the sources for Mac Classic build support. For Mac OS X, use the unix instructions above, with consideration for the following extra options: