So in OpenVPN's makefile.w32 I had to change
OPENSSL = /c/src/openssl-0.9.7e
LIB_DIRS = -L${OPENSSL}/out -L${LZO}
to
OPENSSL = /c/OpenSSL
LIB_DIRS = -L${OPENSSL}/lib/MinGW -L${LZO}
Even after these changes I got the following compile error:
c:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe:
cannot find -lssl32
To get around this problem, I renamed ssleay32.a to libssl32.a. Then it
found the library.
Q1: Why did I have to rename ssleay32.a? It doesn't seem like the "right"
way to solve the problem.
Then the linking failed because it couldn't find the lzo library.
I changed
LZO = /c/src/lzo-1.08
to
LZO = ../lzo-1.08
which was the correct path in my installation, but I found that the libs
were created in the src/.libs dir, so I changed
LIB_DIRS = -L${OPENSSL}/lib/MinGW -L${LZO}
to
LIB_DIRS = -L${OPENSSL}/lib/MinGW -L${LZO}/src/.libs
and openvpn.exe could finaly be built.
Q2: Did I do anything wrong while building LZO, or why did I have to
change the path to the lzo library in LIB_DIRS?
James, what do you think about changing makefile.w32 to match a default
installtion of the binary OpenSSL distribution instead of the source
distribuition? I think very few windows users have any use for the OpenSSL
source, so they could avoid going through the trouble with building
OpenSSL just to build OpenVPN.