This is an old revision of the document!


Building the MySQL and PostgreSQL libraries on Windows

MySQL does not support gcc on Windows, only MSVC. Moved to a separate page.

Both the C and C++ interfaces build fine “out of the box” (except for the LDFLAGS issue mentioned below) when building shared libraries.

There is a problem when building static libraries, though. The C interface uses the Win32 SSPI authentication interface (secur32.dll). This library is not linked in by default when linking statically, and the Makefiles don't know that. Furthermore, any configure script that uses AC_CHECK_LIB or similar instead of pg_config to look for libpq will also need to link with secur32.dll. There are two solutions: either fix the Makefile and all downstream consumers, or disable SSPI.

Keeping SSPI means a little more work right now (to build libpq and libpqxx) but potentially less pain down the line (as long as downstream consumers use pg_config and / or pkg-config so you don't have to specify -lsecur32 manually).

First, get the latest source (currently 8.3.9 for the 8.3 branch) from http://www.postgresql.org/ftp/source/v8.3.9/ and extract it in a convenient place.

There is a bug in src/template/win32: it sets LDFLAGS unconditionally. Change this line:

LDFLAGS="-Wl,--allow-multiple-definition"

to this:

LDFLAGS="${LDFLAGS} -Wl,--allow-multiple-definition"

Next, SSPI (see above). To disable SSPI, open src/include/port/win32.h and comment out the lines near the top that define ENABLE_SSPI:

// #ifndef __BORLANDC__
// #define ENABLE_SSPI 1
// #endif

If you want to keep SSPI, open src/Makefile.global.in, search for -lws2_32, and add -lsecur32 at the end of that line so it looks like this:

ifeq ($(PORTNAME),win32)
LIBS += -lws2_32 -lshfolder -lsecur32
endif

Take care to edit src/Makefile.global.in and not src/Makefile.global, as the latter will be automatically regenerated from the former.

You will also need to fix configure scripts etc. for everything that uses libpq and add -lsecur32 to LDFLAGS or LIBS in the appropriate places.

Then configure:

$ LDFLAGS=-L/c/met.no/lib CPPFLAGS=-I/c/met.no/include ./configure --prefix=/c/met.no --disable-shared

We don't want to install the entire package (server and all); we'll just install the library and headers and the pg_config tool which is used by other packages (such as libpqxx) that link against libpq.

$ make -C src/port all
$ make -C src/backend utils/fmgroids.h
$ make -C src/backend ../../src/include/utils/fmgroids.h
$ make -C src/include all install
$ make -C src/interfaces/libpq all install
$ make -C src/bin/pg_config all install

First, get the latest source (currently 3.0.2) from http://pqxx.org/development/libpqxx/wiki/DownloadPage and extract it in a convenient place.

Then configure:

$ LIBS=-lsecur32 LDFLAGS=-L/c/met.no/lib CPPFLAGS=-I/c/met.no/include PG_CONFIG=/c/met.no/bin/pg_config.exe ./configure --prefix=/c/met.no --disable-shared

The LIBS=-lsecur32 part is necessary because libpqxx's configure script uses a plain AC_CHECK_LIB instead of pg_config (which would have told it that it needed -lsecur32).

Finally, build and install:

$ make all install
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • diana/windows/building/sql.1268233675.txt.gz
  • Last modified: 2022-05-31 09:23:14
  • (external edit)