How can I compile gSoap wsdl2h.exe using MinGW with ssl support

177 Views Asked by At

I am working in windows XP 32 bit (I realize that it is old, but for the project to be carried out I have no alternative) and I'm using gsoap_2.8.123. The MinGW gcc version is gcc.exe (MinGW.org GCC-6.3.0-1) 6.3.0.

MinGW is installed in the directory C:\MinGW

I used msys to download the libraries:

  • mingw32-pthreads-w32

  • msys-libopenssl

Msys download the openssl library under the directory C:\MinGW\msys\1.0\lib\

for which I have copied the directory

C:\MinGW\msys\1.0\lib\openssl in C:\MinGW\lib\openssl

and

C:\MinGW\msys\1.0\include\openssl in C:\MinGW\include\openssl

and

C:\MinGW\msys\1.0\lib\libssl.* in C:\MinGW\lib\libssl.*

I have set the environment variables :

CPPFLAGS = "-DWITH_NO_C_LOCALE -DWITH_OPENSSL"

CXXFLAGS = "-DWITH_NO_C_LOCALE -DWITH_OPENSSL"

I ran ./configure and make

and when the compiler tries to build wsdl2h.exe I get:

make[5]: Entering directory `/c/gSoap/gsoap-2.8/gsoap/wsdl'
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DMINGW -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL    -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL -MT wsdl2h-wsdl2h.o -MD -MP -MF .deps/wsdl2h-wsdl2h.Tpo -c -o wsdl2h-wsdl2h.o `test -f 'wsdl2h.cpp' || echo './'`wsdl2h.cpp
mv -f .deps/wsdl2h-wsdl2h.Tpo .deps/wsdl2h-wsdl2h.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DMINGW -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL    -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL -MT wsdl2h-wsdl.o -MD -MP -MF .deps/wsdl2h-wsdl.Tpo -c -o wsdl2h-wsdl.o `test -f 'wsdl.cpp' || echo './'`wsdl.cpp
mv -f .deps/wsdl2h-wsdl.Tpo .deps/wsdl2h-wsdl.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DMINGW -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL    -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL -MT wsdl2h-wadl.o -MD -MP -MF .deps/wsdl2h-wadl.Tpo -c -o wsdl2h-wadl.o `test -f 'wadl.cpp' || echo './'`wadl.cpp
mv -f .deps/wsdl2h-wadl.Tpo .deps/wsdl2h-wadl.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DMINGW -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL    -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL -MT wsdl2h-schema.o -MD -MP -MF .deps/wsdl2h-schema.Tpo -c -o wsdl2h-schema.o `test -f 'schema.cpp' || echo './'`schema.cpp
mv -f .deps/wsdl2h-schema.Tpo .deps/wsdl2h-schema.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DMINGW -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL    -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL -MT wsdl2h-types.o -MD -MP -MF .deps/wsdl2h-types.Tpo -c -o wsdl2h-types.o `test -f 'types.cpp' || echo './'`types.cpp
mv -f .deps/wsdl2h-types.Tpo .deps/wsdl2h-types.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DMINGW -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL    -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL -MT wsdl2h-service.o -MD -MP -MF .deps/wsdl2h-service.Tpo -c -o wsdl2h-service.o `test -f 'service.cpp' || echo './'`service.cpp
mv -f .deps/wsdl2h-service.Tpo .deps/wsdl2h-service.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DMINGW -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL    -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL -MT wsdl2h-soap.o -MD -MP -MF .deps/wsdl2h-soap.Tpo -c -o wsdl2h-soap.o `test -f 'soap.cpp' || echo './'`soap.cpp
mv -f .deps/wsdl2h-soap.Tpo .deps/wsdl2h-soap.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DMINGW -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL    -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL -MT wsdl2h-mime.o -MD -MP -MF .deps/wsdl2h-mime.Tpo -c -o wsdl2h-mime.o `test -f 'mime.cpp' || echo './'`mime.cpp
mv -f .deps/wsdl2h-mime.Tpo .deps/wsdl2h-mime.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DMINGW -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL    -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL -MT wsdl2h-wsp.o -MD -MP -MF .deps/wsdl2h-wsp.Tpo -c -o wsdl2h-wsp.o `test -f 'wsp.cpp' || echo './'`wsp.cpp
mv -f .deps/wsdl2h-wsp.Tpo .deps/wsdl2h-wsp.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DMINGW -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL    -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL -MT wsdl2h-bpel.o -MD -MP -MF .deps/wsdl2h-bpel.Tpo -c -o wsdl2h-bpel.o `test -f 'bpel.cpp' || echo './'`bpel.cpp
mv -f .deps/wsdl2h-bpel.Tpo .deps/wsdl2h-bpel.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DMINGW -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL    -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL -MT wsdl2h-wsdlC.o -MD -MP -MF .deps/wsdl2h-wsdlC.Tpo -c -o wsdl2h-wsdlC.o `test -f 'wsdlC.cpp' || echo './'`wsdlC.cpp
mv -f .deps/wsdl2h-wsdlC.Tpo .deps/wsdl2h-wsdlC.Po
gcc -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DMINGW -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL    -DWITH_OPENSSL -DWITH_GZIP -g -O2 -MT wsdl2h-httpda.o -MD -MP -MF .deps/wsdl2h-httpda.Tpo -c -o wsdl2h-httpda.o `test -f '../../gsoap/plugin/httpda.c' || echo './'`../../gsoap/plugin/httpda.c
mv -f .deps/wsdl2h-httpda.Tpo .deps/wsdl2h-httpda.Po
gcc -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DMINGW -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL    -DWITH_OPENSSL -DWITH_GZIP -g -O2 -MT wsdl2h-smdevp.o -MD -MP -MF .deps/wsdl2h-smdevp.Tpo -c -o wsdl2h-smdevp.o `test -f '../../gsoap/plugin/smdevp.c' || echo './'`../../gsoap/plugin/smdevp.c
mv -f .deps/wsdl2h-smdevp.Tpo .deps/wsdl2h-smdevp.Po
g++    -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -m32 -DWITH_NO_C_LOCALE -DWITH_OPENSSL -L../../gsoap/wsdl -I../../gsoap -I../../gsoap/plugin  -o wsdl2h.exe wsdl2h-wsdl2h.o wsdl2h-wsdl.o wsdl2h-wadl.o wsdl2h-schema.o wsdl2h-types.o wsdl2h-service.o wsdl2h-soap.o wsdl2h-mime.o wsdl2h-wsp.o wsdl2h-bpel.o wsdl2h-wsdlC.o wsdl2h-httpda.o wsdl2h-smdevp.o ../../gsoap/libgsoapssl++.a -lws2_32 -lkernel32 -luser32 -lgdi32 -lm -lssl -lcrypto -lz -lpthread 
wsdl2h-httpda.o: In function `http_da_session_cleanup':
c:\gSoap\gsoap-2.8\gsoap\wsdl/../../gsoap/plugin/httpda.c:1498: undefined reference to `emulate_pthread_mutex_lock'
wsdl2h-httpda.o: In function `http_da_session_start':
c:\gSoap\gsoap-2.8\gsoap\wsdl/../../gsoap/plugin/httpda.c:1425: undefined reference to `emulate_pthread_mutex_lock'
wsdl2h-httpda.o: In function `http_da_session_update':
c:\gSoap\gsoap-2.8\gsoap\wsdl/../../gsoap/plugin/httpda.c:1460: undefined reference to `emulate_pthread_mutex_lock'
collect2.exe: error: ld returned 1 exit status
make[5]: *** [wsdl2h.exe] Error 1
make[5]: Leaving directory `/c/gSoap/gsoap-2.8/gsoap/wsdl'
make[4]: *** [all] Error 2
make[4]: Leaving directory `/c/gSoap/gsoap-2.8/gsoap/wsdl'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/c/gSoap/gsoap-2.8/gsoap'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/c/gSoap/gsoap-2.8/gsoap'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/c/gSoap/gsoap-2.8'
make: *** [all] Error 2

the gsoap\plugin\threads.c file appears not to be compiled. It is as if there aren't compile directives for .c files in gsoap/plugin

soapcpp2.exe is successfully generated.

What did I do wrong? How can I generate wsdl2h.exe ?

Is my way of proceeding to compile gSoap with ssl support correct?

1

There are 1 best solutions below

0
Brecht Sanders On

You should try with 32-bit MinGW-w64. Since you are targetting Windows XP you may need to get an older version, but it will still be more up to standards than plain MinGW.

This will also drop the dependency on a separate mingw32-pthreads-w32 library, which is clearly giving you problems.