Manual for cross-compiling a C++ application from Linux to Windows?

后端 未结 3 1889
再見小時候
再見小時候 2020-12-02 07:47

Is there a manual for cross-compiling a C++ application from Linux to Windows?

Just that. I would like some information (links, reference, examples...) to guide me t

相关标签:
3条回答
  • 2020-12-02 08:25

    I suggest you give the following, GUB (Grand Unified Builder) a try as it cross-compiles several packages with their dependencies and assembles them into a single installation package for currently 11 architectures. You can download a prebuilt iso for installation in a VM from here and follow the source here. It can currently be used to cross-compile GNU LilyPond/ GNU Denemo / Inkscape and OpenOffice.org.

    The target architectures are:

    • darwin-ppc - tar.bz2 file for Darwin 7 (MacOS 10.3)/PowerPC
    • darwin-x86 - tar.bz2 file for Darwin 8 (MacOS 10.4)/x86
    • mingw - mingw executable for Windows32
    • linux-x86 - shar archive for Linux/x86
    • linux-64 - shar archive for Linux/x86_64
    • linux-ppc - shar archive for Linux/PowerPC
    • freebsd-x86 - shar archive for FreeBSD 4/x86
    • freebsd-64 - shar archive for FreeBSD 6/x86_64
    • cygwin - .tar.bz2 packages for Cygwin/Windows32
    • arm - shar archive for Linux/ARM (largely untested)
    • debian - shar archive for Debian (largely untested)
    0 讨论(0)
  • The basics are not too difficult:

    sudo apt-get install mingw32    
    cat > main.c <<EOF
    int main()
    {
      printf("Hello, World!");
    }
    EOF
    i586-mingw32msvc-cc main.c -o hello.exe
    

    Replace apt-get with yum, or whatever your Linux distro uses. That will generate a hello.exe for Windows.

    Once you get your head around that, you could use autotools, and set CC=i586-mingw32msvc-cc

    CC=i586-mingw32msvc-cc ./configure && make
    

    Or use CMake and a toolchain file to manage the build. More difficult still is adding native cross libraries. Usually they are stored in /usr/cross/i586-mingw32msvc/{include,lib} and you would need to add those paths in separately in the configure step of the build process.

    0 讨论(0)
  • 2020-12-02 08:32

    It depends on what you mean (I couldn't really say).

    1. If you mean that you want to use an existing Linux application on Windows, then you could try compiling it using Cygwin on Windows. This however does not give you a Windows executable free from all dependencies towards Cygwin (your executable still depends on the cygwin.dll file) - and it still may need some porting before it will work. See http://www.cygwin.com.

    2. If you mean that you want to be able to perform the actual compilation of a Windows application on Linux and produce a .exe file that is executable on Windows - thus using your Linux box for development and/or compilation then you should look into MinGW for Linux which is a tool for crosscompiling for Windows on Linux. See http://www.mingw.org/wiki/LinuxCrossMinGW.

    Best regards!

    0 讨论(0)
提交回复
热议问题