Hi ppl, I have a problem when running an executable, it seems that is running fine, but I don't get any output in the console.
I need to build the [Paho MQQT Client](https://eclipse.org/paho/clients/c/) in Cygwin. So I modified the Makefile in order to build .dll instead of .so files. I have attached the changes I made to the Makefile(Makefile_cygwin.patch). I followed the instructions [here](https://cygwin.com/cygwin-ug-net/dll.html) for the dll. The client comes with some sample applications, so I tried to run one of them, MQTTAsync_publish.exe. I would expect to get the following output (I run it in a linux box) $ Waiting for publication of Hello World! $ on topic MQTT Examples for client with ClientID: ExampleClientPub $ Connect failed, rc 0 but I don't get anything in the console and the application seems to run without any other output or any indication. First I thought that I hadn't linked correctly the dll, but I executed the following $ cygcheck.exe ./MQTTAsync_publish.exe C:\cygwin64-fresh\home\svagionitis\workspace\org.eclipse.paho.mqtt.c.git\build\output\samples\MQTTAsync_publish.exe C:\cygwin64-fresh\bin\cygwin1.dll C:\Windows\system32\KERNEL32.dll C:\Windows\system32\API-MS-Win-Core-RtlSupport-L1-1-0.dll C:\Windows\system32\ntdll.dll C:\Windows\system32\KERNELBASE.dll C:\Windows\system32\API-MS-Win-Core-ProcessThreads-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Heap-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Memory-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Handle-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Synch-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-File-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-IO-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-ThreadPool-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-LibraryLoader-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-NamedPipe-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Misc-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-SysInfo-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Localization-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-String-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Debug-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-ErrorHandling-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Fibers-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Util-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Profile-L1-1-0.dll C:\Windows\system32\API-MS-Win-Security-Base-L1-1-0.dll C:\cygwin64-fresh\usr\local\lib\cygpaho-mqtt3a.dll.1.0 and it seems that the library is there. I have installed all the produced libraries in the /usr/local/lib and I have added the /usr/local/lib to the PATH. I am not sure what might be the problem, is it something related to the output or something else? I am open to any suggestions of how to pinpoint the problem. Thank you in advance. Regards, Stavros P.S. I have attached the cygcheck.out for more info of the system.
cygcheck.out
Description: Binary data
diff --git a/Makefile b/Makefile
index 9f9f002..0fd2441 100755
--- a/Makefile
+++ b/Makefile
@@ -30,8 +30,14 @@ endif
# determine current platform
BUILD_TYPE ?= debug
ifeq ($(OS),Windows_NT)
- OSTYPE ?= $(OS)
- MACHINETYPE ?= $(PROCESSOR_ARCHITECTURE)
+ ifeq ($(shell uname -s | cut -d - -f 1),CYGWIN_NT)
+ OSTYPE ?= $(shell uname -s | cut -d - -f 1)
+ MACHINETYPE ?= $(shell uname -m)
+ build.level = $(shell date)
+ else
+ OSTYPE ?= $(OS)
+ MACHINETYPE ?= $(PROCESSOR_ARCHITECTURE)
+ endif
else
OSTYPE ?= $(shell uname -s)
MACHINETYPE ?= $(shell uname -m)
@@ -109,20 +115,41 @@ MAJOR_VERSION = 1
MINOR_VERSION = 0
VERSION = ${MAJOR_VERSION}.${MINOR_VERSION}
-MQTTLIB_C_TARGET = ${blddir}/lib${MQTTLIB_C}.so.${VERSION}
-MQTTLIB_CS_TARGET = ${blddir}/lib${MQTTLIB_CS}.so.${VERSION}
-MQTTLIB_A_TARGET = ${blddir}/lib${MQTTLIB_A}.so.${VERSION}
-MQTTLIB_AS_TARGET = ${blddir}/lib${MQTTLIB_AS}.so.${VERSION}
+ifeq ($(OSTYPE),CYGWIN_NT)
+MQTTLIB_C_LIBNAME = cyg${MQTTLIB_C}.dll
+MQTTLIB_CS_LIBNAME = cyg${MQTTLIB_CS}.dll
+MQTTLIB_A_LIBNAME = cyg${MQTTLIB_A}.dll
+MQTTLIB_AS_LIBNAME = cyg${MQTTLIB_AS}.dll
+else
+MQTTLIB_C_LIBNAME = lib${MQTTLIB_C}.so
+MQTTLIB_CS_LIBNAME = lib${MQTTLIB_CS}.so
+MQTTLIB_A_LIBNAME = lib${MQTTLIB_A}.so
+MQTTLIB_AS_LIBNAME = lib${MQTTLIB_AS}.so
+endif
+
+MQTTLIB_C_TARGET = ${blddir}/${MQTTLIB_C_LIBNAME}.${VERSION}
+MQTTLIB_CS_TARGET = ${blddir}/${MQTTLIB_CS_LIBNAME}.${VERSION}
+MQTTLIB_A_TARGET = ${blddir}/${MQTTLIB_A_LIBNAME}.${VERSION}
+MQTTLIB_AS_TARGET = ${blddir}/${MQTTLIB_AS_LIBNAME}.${VERSION}
+
MQTTVERSION_TARGET = ${blddir}/MQTTVersion
-CCFLAGS_SO = -g -fPIC $(CFLAGS) -Os -Wall -fvisibility=hidden
FLAGS_EXE = $(LDFLAGS) -I ${srcdir} -lpthread -L ${blddir}
FLAGS_EXES = $(LDFLAGS) -I ${srcdir} ${START_GROUP} -lpthread -lssl -lcrypto ${END_GROUP} -L ${blddir}
+ifeq ($(OSTYPE),CYGWIN_NT)
+CCFLAGS_SO = -g $(CFLAGS) -Os -Wall -fvisibility=hidden
+LDFLAGS_C = $(LDFLAGS) -shared -Wl,-init,$(MQTTCLIENT_INIT) -Wl,--no-whole-archive -lpthread -Wl,--export-all-symbols -Wl,--enable-auto-import
+LDFLAGS_CS = $(LDFLAGS) -shared -Wl,-init,$(MQTTCLIENT_INIT) -Wl,--no-whole-archive -lpthread $(EXTRA_LIB) -lssl -lcrypto -Wl,--export-all-symbols -Wl,--enable-auto-import
+LDFLAGS_A = $(LDFLAGS) -shared -Wl,-init,$(MQTTASYNC_INIT) -Wl,--no-whole-archive -lpthread -Wl,--export-all-symbols -Wl,--enable-auto-import
+LDFLAGS_AS = $(LDFLAGS) -shared -Wl,-init,$(MQTTASYNC_INIT) -Wl,--no-whole-archive -lpthread $(EXTRA_LIB) -lssl -lcrypto -Wl,--export-all-symbols -Wl,--enable-auto-import
+else
+CCFLAGS_SO = -g -fPIC $(CFLAGS) -Os -Wall -fvisibility=hidden
LDFLAGS_C = $(LDFLAGS) -shared -Wl,-init,$(MQTTCLIENT_INIT) -lpthread
LDFLAGS_CS = $(LDFLAGS) -shared $(START_GROUP) -lpthread $(EXTRA_LIB) -lssl -lcrypto $(END_GROUP) -Wl,-init,$(MQTTCLIENT_INIT)
LDFLAGS_A = $(LDFLAGS) -shared -Wl,-init,$(MQTTASYNC_INIT) -lpthread
LDFLAGS_AS = $(LDFLAGS) -shared $(START_GROUP) -lpthread $(EXTRA_LIB) -lssl -lcrypto $(END_GROUP) -Wl,-init,$(MQTTASYNC_INIT)
+endif
ifeq ($(OSTYPE),Linux)
@@ -135,10 +162,10 @@ END_GROUP = -Wl,--end-group
EXTRA_LIB = -ldl
-LDFLAGS_C += -Wl,-soname,lib$(MQTTLIB_C).so.${MAJOR_VERSION}
-LDFLAGS_CS += -Wl,-soname,lib$(MQTTLIB_CS).so.${MAJOR_VERSION} -Wl,-no-whole-archive
-LDFLAGS_A += -Wl,-soname,lib${MQTTLIB_A}.so.${MAJOR_VERSION}
-LDFLAGS_AS += -Wl,-soname,lib${MQTTLIB_AS}.so.${MAJOR_VERSION} -Wl,-no-whole-archive
+LDFLAGS_C += -Wl,-soname,${MQTTLIB_C_LIBNAME}.${MAJOR_VERSION}
+LDFLAGS_CS += -Wl,-soname,${MQTTLIB_CS_LIBNAME}.${MAJOR_VERSION} -Wl,-no-whole-archive
+LDFLAGS_A += -Wl,-soname,${MQTTLIB_A_LIBNAME}.${MAJOR_VERSION}
+LDFLAGS_AS += -Wl,-soname,${MQTTLIB_AS_LIBNAME}.${MAJOR_VERSION} -Wl,-no-whole-archive
else ifeq ($(OSTYPE),Darwin)
@@ -152,11 +179,27 @@ END_GROUP =
EXTRA_LIB = -ldl
CCFLAGS_SO += -Wno-deprecated-declarations -DUSE_NAMED_SEMAPHORES
-LDFLAGS_C += -Wl,-install_name,lib$(MQTTLIB_C).so.${MAJOR_VERSION}
-LDFLAGS_CS += -Wl,-install_name,lib$(MQTTLIB_CS).so.${MAJOR_VERSION}
-LDFLAGS_A += -Wl,-install_name,lib${MQTTLIB_A}.so.${MAJOR_VERSION}
-LDFLAGS_AS += -Wl,-install_name,lib${MQTTLIB_AS}.so.${MAJOR_VERSION}
+LDFLAGS_C += -Wl,-install_name,${MQTTLIB_C_LIBNAME}.${MAJOR_VERSION}
+LDFLAGS_CS += -Wl,-install_name,${MQTTLIB_CS_LIBNAME}.${MAJOR_VERSION}
+LDFLAGS_A += -Wl,-install_name,${MQTTLIB_A_LIBNAME}.${MAJOR_VERSION}
+LDFLAGS_AS += -Wl,-install_name,${MQTTLIB_AS_LIBNAME}.${MAJOR_VERSION}
+
+else ifeq ($(OSTYPE),CYGWIN_NT)
+SED_COMMAND = sed -i "s/\#\#MQTTCLIENT_VERSION_TAG\#\#/${release.version}/g; s/\#\#MQTTCLIENT_BUILD_TAG\#\#/${build.level}/g"
+
+MQTTCLIENT_INIT = _MQTTClient_init
+MQTTASYNC_INIT = _MQTTAsync_init
+START_GROUP =
+END_GROUP =
+
+EXTRA_LIB = -ldl
+
+CCFLAGS_SO += -Wno-deprecated-declarations -DUSE_NAMED_SEMAPHORES
+LDFLAGS_C += -Wl,--out-implib=${blddir}/lib$(MQTTLIB_C).dll.a
+LDFLAGS_CS += -Wl,--out-implib=${blddir}/lib$(MQTTLIB_CS).dll.a
+LDFLAGS_A += -Wl,--out-implib=${blddir}/lib${MQTTLIB_A}.dll.a
+LDFLAGS_AS += -Wl,--out-implib=${blddir}/lib${MQTTLIB_AS}.dll.a
endif
all: build
@@ -192,26 +235,26 @@ ${ASYNC_SAMPLES}: ${blddir}/samples/%: ${srcdir}/samples/%.c $(MQTTLIB_A_TARGET)
${MQTTLIB_C_TARGET}: ${SOURCE_FILES_C} ${HEADERS_C}
$(SED_COMMAND) $(srcdir)/MQTTClient.c
${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_C} ${LDFLAGS_C}
- -ln -s lib$(MQTTLIB_C).so.${VERSION} ${blddir}/lib$(MQTTLIB_C).so.${MAJOR_VERSION}
- -ln -s lib$(MQTTLIB_C).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_C).so
+ -ln -s ${MQTTLIB_C_LIBNAME}.${VERSION} ${blddir}/${MQTTLIB_C_LIBNAME}.${MAJOR_VERSION}
+ -ln -s ${MQTTLIB_C_LIBNAME}.${MAJOR_VERSION} ${blddir}/${MQTTLIB_C_LIBNAME}
${MQTTLIB_CS_TARGET}: ${SOURCE_FILES_CS} ${HEADERS_C}
$(SED_COMMAND) $(srcdir)/MQTTClient.c
${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_CS} -DOPENSSL ${LDFLAGS_CS}
- -ln -s lib$(MQTTLIB_CS).so.${VERSION} ${blddir}/lib$(MQTTLIB_CS).so.${MAJOR_VERSION}
- -ln -s lib$(MQTTLIB_CS).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_CS).so
+ -ln -s ${MQTTLIB_CS_LIBNAME}.${VERSION} ${blddir}/${MQTTLIB_CS_LIBNAME}.${MAJOR_VERSION}
+ -ln -s ${MQTTLIB_CS_LIBNAME}.${MAJOR_VERSION} ${blddir}/${MQTTLIB_CS_LIBNAME}
${MQTTLIB_A_TARGET}: ${SOURCE_FILES_A} ${HEADERS_A}
$(SED_COMMAND) $(srcdir)/MQTTAsync.c
${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_A} ${LDFLAGS_A}
- -ln -s lib$(MQTTLIB_A).so.${VERSION} ${blddir}/lib$(MQTTLIB_A).so.${MAJOR_VERSION}
- -ln -s lib$(MQTTLIB_A).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_A).so
+ -ln -s ${MQTTLIB_A_LIBNAME}.${VERSION} ${blddir}/${MQTTLIB_A_LIBNAME}.${MAJOR_VERSION}
+ -ln -s ${MQTTLIB_A_LIBNAME}.${MAJOR_VERSION} ${blddir}/${MQTTLIB_A_LIBNAME}
${MQTTLIB_AS_TARGET}: ${SOURCE_FILES_AS} ${HEADERS_A}
$(SED_COMMAND) $(srcdir)/MQTTAsync.c
${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_AS} -DOPENSSL ${LDFLAGS_AS}
- -ln -s lib$(MQTTLIB_AS).so.${VERSION} ${blddir}/lib$(MQTTLIB_AS).so.${MAJOR_VERSION}
- -ln -s lib$(MQTTLIB_AS).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_AS).so
+ -ln -s ${MQTTLIB_AS_LIBNAME}.${VERSION} ${blddir}/${MQTTLIB_AS_LIBNAME}.${MAJOR_VERSION}
+ -ln -s ${MQTTLIB_AS_LIBNAME}.${MAJOR_VERSION} ${blddir}/${MQTTLIB_AS_LIBNAME}
${MQTTVERSION_TARGET}: $(srcdir)/MQTTVersion.c $(srcdir)/MQTTAsync.h ${MQTTLIB_A_TARGET} $(MQTTLIB_CS_TARGET)
${CC} ${FLAGS_EXE} -o $@ -l${MQTTLIB_A} $(srcdir)/MQTTVersion.c -ldl
@@ -222,31 +265,39 @@ strip_options:
install-strip: build strip_options install
install: build
+ $(INSTALL) -d $(DESTDIR)${libdir}
+ $(INSTALL) -d $(DESTDIR)${includedir}
$(INSTALL_DATA) ${INSTALL_OPTS} ${MQTTLIB_C_TARGET} $(DESTDIR)${libdir}
$(INSTALL_DATA) ${INSTALL_OPTS} ${MQTTLIB_CS_TARGET} $(DESTDIR)${libdir}
$(INSTALL_DATA) ${INSTALL_OPTS} ${MQTTLIB_A_TARGET} $(DESTDIR)${libdir}
$(INSTALL_DATA) ${INSTALL_OPTS} ${MQTTLIB_AS_TARGET} $(DESTDIR)${libdir}
+ -$(INSTALL_DATA) ${blddir}/lib*.dll.a $(DESTDIR)${libdir}
$(INSTALL_PROGRAM) ${INSTALL_OPTS} ${MQTTVERSION_TARGET} $(DESTDIR)${bindir}
- /sbin/ldconfig $(DESTDIR)${libdir}
- ln -s lib$(MQTTLIB_C).so.${MAJOR_VERSION} $(DESTDIR)${libdir}/lib$(MQTTLIB_C).so
- ln -s lib$(MQTTLIB_CS).so.${MAJOR_VERSION} $(DESTDIR)${libdir}/lib$(MQTTLIB_CS).so
- ln -s lib$(MQTTLIB_A).so.${MAJOR_VERSION} $(DESTDIR)${libdir}/lib$(MQTTLIB_A).so
- ln -s lib$(MQTTLIB_AS).so.${MAJOR_VERSION} $(DESTDIR)${libdir}/lib$(MQTTLIB_AS).so
+ -/sbin/ldconfig $(DESTDIR)${libdir}
+ -ln -s ${MQTTLIB_C_LIBNAME}.${VERSION} $(DESTDIR)${libdir}/${MQTTLIB_C_LIBNAME}.${MAJOR_VERSION}
+ ln -s ${MQTTLIB_C_LIBNAME}.${MAJOR_VERSION} $(DESTDIR)${libdir}/${MQTTLIB_C_LIBNAME}
+ -ln -s ${MQTTLIB_CS_LIBNAME}.${VERSION} $(DESTDIR)${libdir}/${MQTTLIB_CS_LIBNAME}.${MAJOR_VERSION}
+ ln -s ${MQTTLIB_CS_LIBNAME}.${MAJOR_VERSION} $(DESTDIR)${libdir}/${MQTTLIB_CS_LIBNAME}
+ -ln -s ${MQTTLIB_A_LIBNAME}.${VERSION} $(DESTDIR)${libdir}/${MQTTLIB_A_LIBNAME}.${MAJOR_VERSION}
+ ln -s ${MQTTLIB_A_LIBNAME}.${MAJOR_VERSION} $(DESTDIR)${libdir}/${MQTTLIB_A_LIBNAME}
+ -ln -s ${MQTTLIB_AS_LIBNAME}.${VERSION} $(DESTDIR)${libdir}/${MQTTLIB_AS_LIBNAME}.${MAJOR_VERSION}
+ ln -s ${MQTTLIB_AS_LIBNAME}.${MAJOR_VERSION} $(DESTDIR)${libdir}/${MQTTLIB_AS_LIBNAME}
$(INSTALL_DATA) ${srcdir}/MQTTAsync.h $(DESTDIR)${includedir}
$(INSTALL_DATA) ${srcdir}/MQTTClient.h $(DESTDIR)${includedir}
$(INSTALL_DATA) ${srcdir}/MQTTClientPersistence.h $(DESTDIR)${includedir}
uninstall:
- rm $(DESTDIR)${libdir}/lib$(MQTTLIB_C).so.${VERSION}
- rm $(DESTDIR)${libdir}/lib$(MQTTLIB_CS).so.${VERSION}
- rm $(DESTDIR)${libdir}/lib$(MQTTLIB_A).so.${VERSION}
- rm $(DESTDIR)${libdir}/lib$(MQTTLIB_AS).so.${VERSION}
+ rm $(DESTDIR)${libdir}/${MQTTLIB_C_LIBNAME}.${VERSION}
+ rm $(DESTDIR)${libdir}/${MQTTLIB_CS_LIBNAME}.${VERSION}
+ rm $(DESTDIR)${libdir}/${MQTTLIB_A_LIBNAME}.${VERSION}
+ rm $(DESTDIR)${libdir}/${MQTTLIB_AS_LIBNAME}.${VERSION}
rm $(DESTDIR)${bindir}/MQTTVersion
- /sbin/ldconfig $(DESTDIR)${libdir}
- rm $(DESTDIR)${libdir}/lib$(MQTTLIB_C).so
- rm $(DESTDIR)${libdir}/lib$(MQTTLIB_CS).so
- rm $(DESTDIR)${libdir}/lib$(MQTTLIB_A).so
- rm $(DESTDIR)${libdir}/lib$(MQTTLIB_AS).so
+ -/sbin/ldconfig $(DESTDIR)${libdir}
+ rm $(DESTDIR)${libdir}/${MQTTLIB_C_LIBNAME}
+ rm $(DESTDIR)${libdir}/${MQTTLIB_CS_LIBNAME}
+ rm $(DESTDIR)${libdir}/${MQTTLIB_A_LIBNAME}
+ rm $(DESTDIR)${libdir}/${MQTTLIB_AS_LIBNAME}
+ rm $(DESTDIR)${libdir}/*paho-mqtt3*.dll.a
rm $(DESTDIR)${includedir}/MQTTAsync.h
rm $(DESTDIR)${includedir}/MQTTClient.h
rm $(DESTDIR)${includedir}/MQTTClientPersistence.h
-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple

