Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Building Qt5 from source under Cygwin
QtWS25 Last Chance

Building Qt5 from source under Cygwin

Scheduled Pinned Locked Moved Unsolved General and Desktop
cygwin
12 Posts 4 Posters 6.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Mwvse

    Hi,

    I am fairly new to Qt and would like some advice if you would be so kind.

    I have a large POSIX based console/command line application that I have been running under Linux and Cygwin for quite some time now. I have successfully added a basic Qt based GUI to the Linux port of that application and would like to do the same for the Cygwin version but need an appropriate build environment to do so.

    I have successfully installed the MinGW based Qt environment and have become reasonably familiar with qmake and QtCreator and have experimented with a number of the samples. My next challenge seems to be building the toolchain under Cygwin so I can incorporate my Qt app Gui (the one I developed in my Linux environment) with that same app under cygwin.

    I have read everything I can find via googling and it does not appear that many people are building Qt under Cygwin. So, I am curious if the community has much experience building Qt under Cygwin and, if so, could someone please point me to their config/build process steps to help me get started?

    Thanks in advance,
    MW

    K Offline
    K Offline
    koahnig
    wrote on last edited by
    #2

    @Mwvse

    Hi and welcome to devnet

    The question I like to raise is: Why are you plan to use Qt under Cygwin after you have installed already Qt for MinGW on windows?

    Basically you should be able to compile and link your application under windows as well. Does your application have basic POSIX stuff in there that you would need to have Cygwin as a layer in between?
    If this is the case, you want to check whether you can convert stuff that you can use it directly under windows.

    It is a while ago (probably almost a decade) that I have used Cygwin. In general, when you are used to linux, it should be at least fairly the same when not exactly the same. I had compiled Qt 4 back then.

    If you really have to use Cygwin, I would recommend to start and follow the linux route. When you have problems you need to describe them with the details in posts here. Probably someone will be able to give you enough hints.

    Vote the answer(s) that helped you to solve your issue(s)

    1 Reply Last reply
    0
    • M Offline
      M Offline
      Mwvse
      wrote on last edited by Mwvse
      #3

      Thank you for the thoughtful response, koahnig.

      The need for cygwin:
      I have seen questions similar to mine in various searches. And, I have seen many answers similar to yours. I understand the reasoning (abstraction/portability) and will certainly consider those factors in future apps. In this particular instance, however, I have this large existing app with a fair amount of unix/linux/posix specific stuff that I simply want to wrap in a GUI.

      Progress thus far:
      I downloaded the 5.7 Linux tar and found the mkspecs/cygwin-g++/qmake.conf file. I made minor modifications to it and am now able to successfully get through 'configure' within cygwin (I made a few minor mods to a couple of header files to get it to pass (a few preprocessor directives and a few function prototypes)). The 'make' now gets 5 or so minutes in before dying so I am starting to take a look at those. I will come back to this thread with more questions and/or results depending on the circumstances I encounter.

      Thanks again!

      1 Reply Last reply
      0
      • M Offline
        M Offline
        Mwvse
        wrote on last edited by
        #4

        I have exhausted everything I can think of...build issue with some winsock stuff. Not sure what else I should post to provide additional/helpful diagnostic info. Thanks in advance.

        Here are the errors :

        make[3]: Entering directory '/home/a/qt-everywhere-opensource-src-5.7.0/qtbase/src/corelib'
        g++ -std=c++11 -U__STRICT_ANSI__ -c -pipe -D_REENTRANT -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -O2 -Wall -W -Wvla -Wdate-time -D_REENTRANT -DQT_NO_MTDEV -DQT_NO_LIBUDEV -DQT_NO_EVDEV -DQT_NO_TSLIB -DQT_NO_LIBINPUT -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQT_HAVE_POLL -DQT_HAVE_PPOLL -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -I. -Iglobal -I../3rdparty/harfbuzz/src -I../3rdparty/md5 -I../3rdparty/md4 -I../3rdparty/sha3 -I../3rdparty/double-conversion/include -I../3rdparty/double-conversion/include/double-conversion -I../3rdparty/forkfd -I../../include -I../../include/QtCore -I../../include/QtCore/5.7.0 -I../../include/QtCore/5.7.0/QtCore -I.moc -I../../mkspecs/cygwin-g++ -o .obj/qglobal.o global/qglobal.cpp
        
        global/qglobal.cpp: In constructor ‘QWindowsSockInit::QWindowsSockInit()’:
        global/qglobal.cpp:1944:5: error: ‘WSAData’ was not declared in this scope
             WSAData wsadata;
             ^
        global/qglobal.cpp:1947:36: error: ‘wsadata’ was not declared in this scope
             if (WSAStartup(MAKEWORD(2,0), &wsadata) != 0) {
                                            ^
        global/qglobal.cpp:1947:43: error: ‘WSAStartup’ was not declared in this scope
             if (WSAStartup(MAKEWORD(2,0), &wsadata) != 0) {
                                                   ^
        global/qglobal.cpp: In destructor ‘QWindowsSockInit::~QWindowsSockInit()’:
        global/qglobal.cpp:1956:16: error: ‘WSACleanup’ was not declared in this scope
             WSACleanup();
                        ^
        In file included from ../../include/QtCore/qglobalstatic.h:1:0,
                         from global/qglobal.h:1146,
                         from ../../mkspecs/cygwin-g++/qplatformdefs.h:45,
                         from global/qglobal.cpp:41:
        
        
        K 1 Reply Last reply
        0
        • M Mwvse

          I have exhausted everything I can think of...build issue with some winsock stuff. Not sure what else I should post to provide additional/helpful diagnostic info. Thanks in advance.

          Here are the errors :

          make[3]: Entering directory '/home/a/qt-everywhere-opensource-src-5.7.0/qtbase/src/corelib'
          g++ -std=c++11 -U__STRICT_ANSI__ -c -pipe -D_REENTRANT -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -O2 -Wall -W -Wvla -Wdate-time -D_REENTRANT -DQT_NO_MTDEV -DQT_NO_LIBUDEV -DQT_NO_EVDEV -DQT_NO_TSLIB -DQT_NO_LIBINPUT -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQT_HAVE_POLL -DQT_HAVE_PPOLL -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -I. -Iglobal -I../3rdparty/harfbuzz/src -I../3rdparty/md5 -I../3rdparty/md4 -I../3rdparty/sha3 -I../3rdparty/double-conversion/include -I../3rdparty/double-conversion/include/double-conversion -I../3rdparty/forkfd -I../../include -I../../include/QtCore -I../../include/QtCore/5.7.0 -I../../include/QtCore/5.7.0/QtCore -I.moc -I../../mkspecs/cygwin-g++ -o .obj/qglobal.o global/qglobal.cpp
          
          global/qglobal.cpp: In constructor ‘QWindowsSockInit::QWindowsSockInit()’:
          global/qglobal.cpp:1944:5: error: ‘WSAData’ was not declared in this scope
               WSAData wsadata;
               ^
          global/qglobal.cpp:1947:36: error: ‘wsadata’ was not declared in this scope
               if (WSAStartup(MAKEWORD(2,0), &wsadata) != 0) {
                                              ^
          global/qglobal.cpp:1947:43: error: ‘WSAStartup’ was not declared in this scope
               if (WSAStartup(MAKEWORD(2,0), &wsadata) != 0) {
                                                     ^
          global/qglobal.cpp: In destructor ‘QWindowsSockInit::~QWindowsSockInit()’:
          global/qglobal.cpp:1956:16: error: ‘WSACleanup’ was not declared in this scope
               WSACleanup();
                          ^
          In file included from ../../include/QtCore/qglobalstatic.h:1:0,
                           from global/qglobal.h:1146,
                           from ../../mkspecs/cygwin-g++/qplatformdefs.h:45,
                           from global/qglobal.cpp:41:
          
          
          K Offline
          K Offline
          koahnig
          wrote on last edited by
          #5

          @Mwvse

          Not sure what the issues could be.

          Do you have a recent version of gcc compiler in Cygwin?

          Other @Moderators may have more detailed knowledge on reasons for your problems. At the moment I would assume that it is compiler version related.

          Vote the answer(s) that helped you to solve your issue(s)

          1 Reply Last reply
          1
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #6

            Hi,

            I'm no Cygwin specialist but why not use the Qt 5 packages provided by them ?

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            M 1 Reply Last reply
            1
            • M Offline
              M Offline
              Mwvse
              wrote on last edited by
              #7

              Thanks (again) for the reply. Compiler version below.

              I can't find the WSAData type (et al). Perhaps I need a Windows SDK??

              $ g++ --version
              g++ (GCC) 5.4.0
              Copyright (C) 2015 Free Software Foundation, Inc.
              This is free software; see the source for copying conditions.  There is NO
              warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
              
              
              1 Reply Last reply
              0
              • SGaistS SGaist

                Hi,

                I'm no Cygwin specialist but why not use the Qt 5 packages provided by them ?

                M Offline
                M Offline
                Mwvse
                wrote on last edited by Mwvse
                #8

                @SGaist - Thank you very much for the reply.

                I did load those packages and did some experimentation but had a number of issues that I haven't yet been able to resolve. Their packages have a mixture of Qt3, Qt4, and Qt5. I loaded all the Qt5 packages I could find but running qmake gave me some so-so results. The generated Makefiles had some weird file/pathnames that didn't make sense to me. I hacked the Makefiles by hand but then had problems getting everything linked. Probably something I am not doing correctly but so far it seems they have a weird mixture of static and dynamic libraries and I can't get an app to resolve all those references/dependencies (I was up til 4:00 am last night trying to get it to work).

                I appreciate the suggestion. I will keep working on both options (pre-built cygwin and building my own 5.7 tool chain) and see if I can get one or both figured out. Any other suggestions/comments from the community are greatly appreciated.

                K 1 Reply Last reply
                0
                • M Mwvse

                  @SGaist - Thank you very much for the reply.

                  I did load those packages and did some experimentation but had a number of issues that I haven't yet been able to resolve. Their packages have a mixture of Qt3, Qt4, and Qt5. I loaded all the Qt5 packages I could find but running qmake gave me some so-so results. The generated Makefiles had some weird file/pathnames that didn't make sense to me. I hacked the Makefiles by hand but then had problems getting everything linked. Probably something I am not doing correctly but so far it seems they have a weird mixture of static and dynamic libraries and I can't get an app to resolve all those references/dependencies (I was up til 4:00 am last night trying to get it to work).

                  I appreciate the suggestion. I will keep working on both options (pre-built cygwin and building my own 5.7 tool chain) and see if I can get one or both figured out. Any other suggestions/comments from the community are greatly appreciated.

                  K Offline
                  K Offline
                  koahnig
                  wrote on last edited by
                  #9

                  @Mwvse

                  @SGaist brings up a good point.

                  Do you use the newest Cygwin version? This should have at least a Qt 5.5 version with it.

                  What is your Qt version on linux?

                  Vote the answer(s) that helped you to solve your issue(s)

                  M 1 Reply Last reply
                  0
                  • BuckwheatB Offline
                    BuckwheatB Offline
                    Buckwheat
                    wrote on last edited by
                    #10

                    @Mwvse, Have you tried installing MSYS2? It uses GNU toolchain 6.2.x and installs Qt 5.6.1-2 for both i686 and x86_64 targets. It is a recent fork of Cygwin but does not have all the baggage of Cygwin paths and the layers of DLLs needed. I use this to target development on *nix, Win10, and OSX because of the POSIXness that I do not get with M$VS.

                    I have found over the last 5 years of using Qt that leaving the building to the Qt folks or the distro builders yields much better results and gives me less headaches in the long run. Why should I spend aggravating hours, days, or even weeks trying to tweak a build when I can get right to the fun stuff!

                    Dave Fileccia

                    M 1 Reply Last reply
                    0
                    • K koahnig

                      @Mwvse

                      @SGaist brings up a good point.

                      Do you use the newest Cygwin version? This should have at least a Qt 5.5 version with it.

                      What is your Qt version on linux?

                      M Offline
                      M Offline
                      Mwvse
                      wrote on last edited by
                      #11

                      @koahnig - Thanks for the response. Yes, I have a recent cygwin version and it does have Qt 5.5 (I'm using Qt 5.7 in my Linux environment). Something is still hosed with my Cygwin Qt pre-built/packaged environment. Even a simple qmake project emits a few hiccups in the generated Makefiles. I am still experimenting.

                      1 Reply Last reply
                      0
                      • BuckwheatB Buckwheat

                        @Mwvse, Have you tried installing MSYS2? It uses GNU toolchain 6.2.x and installs Qt 5.6.1-2 for both i686 and x86_64 targets. It is a recent fork of Cygwin but does not have all the baggage of Cygwin paths and the layers of DLLs needed. I use this to target development on *nix, Win10, and OSX because of the POSIXness that I do not get with M$VS.

                        I have found over the last 5 years of using Qt that leaving the building to the Qt folks or the distro builders yields much better results and gives me less headaches in the long run. Why should I spend aggravating hours, days, or even weeks trying to tweak a build when I can get right to the fun stuff!

                        M Offline
                        M Offline
                        Mwvse
                        wrote on last edited by
                        #12

                        @Buckwheat, I have not looked at MSYS2 but your description and a brief read of their intro sounds like it may be a good option for me. I will pursue this as an option as well. Thank you very much for the insights.

                        1 Reply Last reply
                        0

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved