What are the benefits of Qt programming on Linux rather than Windows



  • Hi guys all,

    I'm using a Windows x64 machine with, Qt Creator 5.8, Android Studio 2.2.3, SDK, NDK, Java on it. Using these I can program for both Windows and Android. (although I have still this problem on Qt quick).

    Since using and being familiar with Linux is necessary for my future, I would like to have an Ubuntu distribution as a virtual machine (using VmWare workstation) and practically use it for programming for Windows, Android ( and also Linux probably). That is, the Windows will be the host and Ubuntu as a virtual machine on it.

    I've suffered much from installing the tools needed for being able to run apps for Android OS too (E.g., solving issue of updating the SDK, setting the tools up, etc) now I have an idea in mind:
    installing an Ubuntu OS as a virtual machine and a Linux version of Qt Creator on it, then go for programming. So I need your help.

    1- Can I use Qt Creator (on that Ubuntu virtual OS) for programming for both windows and Android?
    2- What about making programs for Linux, there?
    3- I needed many tools for programming for Android on Windows, do I need all of those tools again there?
    4- What are the benefits of this immigration? That is, is it a good idea to use Linux this way for my purposes and leave Windows?

    Thank you all very much. I will be very grateful if you give answers by numbering (for those 4 questions) or each after its question.



  • Hi! You can't compile binaries for Windows on Linux. For compiling Windows binaries you need to a Windows machine. It's theoretically possible to set up a cross-compiling environment, but that'd probably be the biggest PITA I can think of. We have a nice overview on our wiki, see Supported Platforms. The table there shows what host is needed for what target.

    1 - No, you can build Android software on Linux, but not Windows software.
    2 - Yes, compiling on Linux for Linux is good.
    3 - Yes, the binaries of these tools aren't compatible between Linux and Windows.
    4 - None. No. IMAO, use either two physical desktop computers or dual boot.



  • 1 was answered already.
    2- Yes, it should be possible to compile Linux binaries in a VM.
    3- Yes, if you want to compile Android binaries.
    4- You need Linux to compile for Linux, VM should be ok for that if you don't want to/can't install Linux directly on a machine and use that.

    (Wieland published his answer before me but I didn't want to discard what I already wrote...:)



  • @Wieland

    see [Supported Platforms]

    So:
    Host: Windows => Target : Windows and Android
    Host: Linux (say Ubuntu) => Target : Linux and Android

    3 - Yes, the binaries of these tools aren't compatible between Linux and Windows.

    So I need to install all the Linux versions of stuff: SDK, NDK, Java, + system images for Linux!?

    A subtle question: my purpose is, at the time being, not developing apps for Linux, rather, just for windows and android which is accessible on my recent windows machine, so why should I install another OS (Linux) + all the stuff for what that has been obtained already using this current machine (Windows)?
    I meant, OK, I will install a Linux in dual boot, are there any advantages afterwards?



  • You can build software for Windows on Linux using MinGW cross-compiler. Linux distributions sometimes provide cross-compiled libraries in their repos, or you can use http://mxe.cc/



  • @tomy said in What are the benefits of Qt programming on Linux rather than Windows:

    So I need to install all the Linux versions of stuff: SDK, NDK, Java, + system images for Linux!?

    Yes, sure. Linux binaries work only on Linux, Windows binaries work only on Windows, macOS binaries work only on macOS, and so on, and so on.

    A subtle question: my purpose is, at the time being, not developing apps for Linux, rather, just for windows and android which is accessible on my recent windows machine, so why should I install another OS (Linux) + all the stuff for what that has been obtained already using this current machine (Windows)?
    I meant, OK, I will install a Linux in dual boot, are there any advantages afterwards?

    In your first post you said you'd need Linux for your future (whatever that means). If you install it, you'll have it. If you don't need it, don't install it. But maybe I don't understand the question :-)



  • @Wieland
    Yes, I may need it "in future" but not "for the time being".

    I meant what are the advantages of using Linux for Android (instead of windows)? for example: (Android programming on Linux vs. on Widnpws)

    • the Android version of Qt on Linux may have less bugs than that of on windows
    • using Linux for Android programming gives more accessibilities
    • faster compiling/running

    These or whatever else.
    ?





  • @tomy Well for #1 it depends on what you mean.. I write all my apps cross platform for win/linux/osx. I develop exclusively in either linux (most of the time) or sometimes osx. I don't even have a code editor in windows at all.

    The whole point of Qt is cross platform. So if you stick with Qt specific stuff you can write a linux app that just needs a windows box to build.

    That being said, you will run into times where things don't look or act right compared to your native OS, in which case you need to do some platform specific tweaking. But on the whole you can write all the code in your OS of choice and then just build and test it on your target platforms.

    And my 2 cents on moving to Linux (#4) is hell yea! Once you get used to linux or even osx you will hate ever having to touch windows again. ;) I switched to linux in 2000 and went with OSX from 2004-2008 or so, then got sick of paying 6k/computer for apples and back to linux in 2008. Never ever tempted to ever use windows again except to support my software and play games. ;)



  • @ambershark

    Do you use a Linux to write apps for Windows, Linux and iOS (or even Android as well)!? That is, is it possible to write apps for iOS on a non-iDevice!? Or even for Windows on a Linux!?

    I guess these may not be impossible, but there may be bugs in developing various types of apps this way. For example, although developing Android apps on Windows is possible, I faced a bug when testing a simple Qt Quick app on an emulator!
    Then, I was told if I use a Linux for writing Qt Quick apps, that bug is fixed there. And that was the reason I tried to know all the benefits of moving to Linux.



  • @tomy To develop for iOS (tvOS, watchOS as well) you have to use macOS. Everything else is possible to do on Linux.

    Windows development on Linux may give you some troubles that you wouldn't have when doing native development, but they are solvable (except you won't be able to use MSVC on Linux)



  • @Konstantin-Tokarev
    Thanks.
    I want to write apps for iPhone and iPad (mostly iPhone). So if I can develop apps for Linux, Android and iPhone all on a Linux dist like Ubuntu, it's a really good news. :-)
    Just tell me how to do it please?

    For Windows, it's not that important. I can have a dual boot (a windows and a Linux) and for the windows apps I use the windows platform itself.



  • @tomy Absolutely... I write all my code in my native OS which at this time is Linux.

    Then I compile and test on the target platform. So I develop and test mostly on linux but then before releases I build and test on OSX and windows (same code base).

    If there are problems I fix them before release. I spend very little time outside linux though.

    As for iOS and android. I don't do mobile development much but the library I wrote for android/ios was indeed developed primarily in linux and only tested on the target devices.

    You can build android and linux on linux. iOS and OSX on osx, and windows phone/windows desktop on windows. I don't think Qt supports windows phone, but the mobile project I did we went raw rather than using Qt.



  • @tomy said in What are the benefits of Qt programming on Linux rather than Windows:

    @Konstantin-Tokarev
    Thanks.
    I want to write apps for iPhone and iPad (mostly iPhone). So if I can develop apps for Linux, Android and iPhone all on a Linux dist like Ubuntu, it's a really good news. :-)
    Just tell me how to do it please?

    For Windows, it's not that important. I can have a dual boot (a windows and a Linux) and for the windows apps I use the windows platform itself.

    To do this you would have to use Qt. Since your Qt code can be used on android as well as ios, you could develop on Linux. You would of course have to actually build it on OSX for deployment and testing on actual iOS devices though.

    If you went native you would not be able to develop iOS on anything but a mac. I mean you could still write the code but actual building would have to be done on osx.

    You can still use linux, but you would need to have a mac server or something to ssh and build though. So if you are doing raw iOS development just get a mac. If you are going cross platform, use whatever you like (again I prefer linux these days). :)



  • To simplify the issue and offer a simple, right, concise and useful answer we say:

    Apps for Windows: using Qt (C++) on a Windows host
    Apps for android: using Qt Quick on a Windows/Linux host
    Apps for Linux: using (a related version of) Qt (Creator) on a Linux host
    Apps for iOS: using (a related version of) Qt (Creator) using an Apple device running Mac Os x.

    I think you agree?


  • Lifetime Qt Champion

    Hi,

    Not quite:

    Apps for android: on a Windows/Linux/macOS host

    You might be able to cross-compile from Linux to Windows but that has other implications.





  • @Wieland
    I'd seen this, but when I hear that I can use a Linux for iOS apps, questions will appear.

    So to give an answer for my original question, I say: "no advantages unless I'm developing for Linux and not Windows".



  • @tomy The table is the definitive answer. Other combinations might be possible, but are not officially supported.



  • Thank you all. The problem is solved I think. I up vote all answers to appreciate your help.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.