mingw cross-compiling libpq.dll+ssl on Debian
От | Tomasz Myrta |
---|---|
Тема | mingw cross-compiling libpq.dll+ssl on Debian |
Дата | |
Msg-id | 4553B737.5050509@klaster.net обсуждение исходный текст |
Ответы |
Re: mingw cross-compiling libpq.dll+ssl on Debian
Re: mingw cross-compiling libpq.dll+ssl on Debian |
Список | 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
В списке pgsql-ports по дате отправления: