From: | Tomasz Myrta <jasiek(at)klaster(dot)net> |
---|---|
To: | pgsql-ports(at)postgresql(dot)org |
Subject: | mingw cross-compiling libpq.dll+ssl on Debian |
Date: | 2006-11-09 23:18:15 |
Message-ID: | 4553B737.5050509@klaster.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ports |
Hello
I've tried to recompile libpq.dll with ssl support using mingw32
cross-compiler on Debian. I would like to create single lightweight
libpq-ssl.dll instead of almost 3MB
libpq.dll+libeay32.dll+krb5_32.dll+libintl-2.dll+ssleay32.dll deployed
recently with Postgresql Windows package. My Postgresql source version
is 8.1.5. I have some success, but it's not enough.
1. Patching mingw32.
Windres is unknown application for Debian, so we need to create file
/usr/bin/windres containing:
#!/bin/sh
i586-mingw32msvc-windres -I /usr/i586-mingw32msvc/include/ $1 $2 $3 $4
$5 $6 $7
2. Creating makefile - without ssl support for now:
export CC=i586-mingw32msvc-gcc
export LD=i586-mingw32msvc-ld
export AR=i586-mingw32msvc-ar
export NM=i586-mingw32msvc-nm
export RANLIB=i586-mingw32msvc-ranlib
export DLLTOOL=i586-mingw32msvc-dlltool
export OBJDUMP=i586-mingw32msvc-objdump
export STRIP=i586-mingw32msvc-strip
export STRIPPROG=i586-mingw32msvc-strip
export AS=i586-mingw32msvc-as
export RC=i586-mingw32msvc-windres
./configure --host=i586-mingw32msvc --without-zlib \
--prefix /usr/i586-mingw32msvc --target=i586-mingw32msvc \
export PATH=/usr/i586-mingw32msvc/bin:$PATH
3. dllwrap gives an error:
/usr/i586-mingw32msvc/bin/ld: unrecognised emulation mode: elf_i386
Supported emulations: i386pe
I've read somewhere, that dll's can be linked through gcc. Replacing
dll-tool with gcc in Makefile.shlib:
i586-mingw32msvc-gcc --strip-all -shared -DBUILDING_DLL -o $(shlib)
$(DLLTOOL_LIBFLAGS) $(OBJS) $(SHLIB_LINK)
solved the problem.
4. openssl is much easier to build:
./Configure mingw shared no-krb5
We have to replace "gcc" with "i586-mingw32msvc-gcc" in Makefile (CC=
and MAKEDEPPROG=).
After applying these patches I'm able to get:
- libpq.dll without ssl support
- ssleay32-0.9.8.dll
- cryptoeay32-0.9.8.dll
Postgresql8.1.5 configure script --with-openssl option gives me an error:
configure: error: library 'eay32' is required for OpenSSL
- I have no idea how to make openssl dll's visible to it. I suppose,
that cryptoeay32 is not expected library name.
- which openssl cyphers are really necessary to work with Postgresql ?
- when exactly is used libiconv.dll and libintl-2.dll - do I also need
them ?
- how to link all of these libraries into single libpq.dll file ?
Best regards,
Tomasz Myrta
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2006-11-10 11:44:21 | Re: mingw cross-compiling libpq.dll+ssl on Debian |
Previous Message | Magnus Hagander | 2006-10-05 07:33:01 | Re: PostgreSQL and Kerberos 5 on Solaris |