[olug] compiling PostgreSQL for Windows

Lou Duchez lou at paprikash.com
Tue Mar 10 17:07:37 CDT 2015

I work in a mixed environment of Linux and Windows servers, with lots of 
PostgreSQL databases on both types of machines.  Ever since about day 
one, I have been updating PostgreSQL on the Linux boxes by downloading 
the new source code from postgresql.org and doing the old "configure / 
make / make install" that we've come to expect. Windows compiling was 
always more complicated, though, so I would just download the pre-built 

Only problem is, with the latest major revision of PostgreSQL, they've 
withdrawn support for some of the older versions of Windows I have to 
work with, so no new binaries.  So I spent some time the past couple 
days figuring out the compilation process, and now I can roll my own.

So just in case anyone needs to compile their own Windows PostgreSQL, 
here are my notes.  I do not guarantee their inerrancy; this is what 
worked for me, and assuming I didn't forget to record any steps, 
hopefully it should work for you too.


Compiling PostgreSQL under Windows

General instructions can be found here:


These instructions assume you have a copy of Visual Studio, and that you 
will get the Microsoft Windows SDK, ActiveState Perl, Diff, Gettext, and 
openssl per the Web page above.

1)    Unzip the PostgreSQL source (postgresql-x.x.x.tar.gz) to 

2)    Create or edit the file 
C:\postgresql-x.x.x\src\tools\msvc\config.pl so that it contains this line:

     $config->{openssl} = 'C:\OpenSSL-Win32';

     This is the directory where OpenSSL was installed; if it was 
installed elsewhere, change as appropriate.  Note the use of apostrophes 
rather than double-quotes.

3)    Click on Programs / Microsoft Visual Studio / Visual Tools / 
Visual Studio Command Prompt.  This opens a command prompt with the 
Visual Studio environment.

4)    Run "clean" to make sure the directories are cleaned out for a new 

5)    Run "build" to do the build.  After several minutes it should be 
done, and hopefully will return zero errors (though some number of 
warnings are normal).

6)    Run "path %PATH%;C:\Program Files\GnuWin32\bin"so that the 
regression check will have access to the Gnu utilities it needs. (Again, 
change the path as appropriate.)

7)    Run "vcregress check" to do the regression check.

8)    Run "install C:\PostgreSQL\x.x" to install in C:\PostgreSQL\x.x.

PostgreSQL does not require any registry work or moving files into 
"shared" folders.  The remaining steps are just creating the cluster and 
creating a service for starting / stopping PostgreSQL.

To create the cluster:

1)    Create a user "postgres" for PostgreSQL to run under.

2)    At a command prompt, run "runas /user:postgres".  After you enter 
the password, a new command prompt will open that is running as postgres.

3)    Run "C:\postgresql\x.x\bin\initdb -E UTF-8 -D c:\postgresql\x.x\data".

To create the service:

c:\postgresql\x.x\bin\pg_ctl register -N [service name] -U postgres -P 
[password] -D C:\postgresql\x.x\data -w

More information about the OLUG mailing list