How to compile existing posix code for 64-bit Windows?

前端 未结 2 1252
予麋鹿
予麋鹿 2021-02-06 12:32

I\'m ok with using Cygwin or MinGW, but I need to end up with 64-bit code, not 32-bit. This is because I will be calling the DLL from 64-bit managed C#. I can\'t seem to find

2条回答
  •  醉梦人生
    2021-02-06 13:17

    The 64-bit MinGW, based on (just released) gcc-4.4.0, is probably your best bet. (Since the mingw-w64 project on sourceforge.net is moving to mingw-w64.org it's better to use mingw-w64.org)

    Detailed instructions:
    1. Download the archive
    2. Extract it somewhere under cygwin. In my case, top-level cygwin directory is C:\cygwin, I extracted the package into mingw directory, and ended up with the following contents in C:\cygwin\mingw (which is visible as /mingw under cygwin:

    $ ls -l /mingw
    total 1
    drwxr-xr-x+ 2 user None  0 May 10 08:32 bin
    drwxr-xr-x+ 2 user None  0 May 10 05:45 include
    drwxr-xr-x+ 2 user None  0 May 10 08:30 info
    drwxr-xr-x+ 3 user None  0 May 10 08:30 lib
    drwxr-xr-x+ 3 user None  0 May 10 05:45 libexec
    drwxr-xr-x+ 4 user None  0 May 10 05:45 man
    lrwxrwxrwx  1 user None 17 May 17 17:20 mingw -> x86_64-pc-mingw32
    drwxr-xr-x+ 3 user None  0 May 10 04:16 share
    drwxr-xr-x+ 5 user None  0 May 10 04:18 x86_64-pc-mingw32
    

    3. Now compile some C++ code. I used:

    // t.cc
    #include 
    #include 
    
    using namespace std;
    int main()
    {
        vector vs;
        vs.push_back("abc");
    }
    

    And compile it like this:

    $ /mingw/bin/x86_64-pc-mingw32-g++ t.cc
    

    4. Finally, verify the result is a Windows/x 64 executable, by running dumpbin /headers a.exe:

    Microsoft (R) COFF/PE Dumper Version 7.00.9466
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    
    Dump of file a.exe
    
    PE signature found
    
    File Type: EXECUTABLE IMAGE
    
    FILE HEADER VALUES
                8664 machine (AMD64)
                  10 number of sections
            4A10AF9F time date stamp Sun May 17 17:45:19 2009
               ABA00 file pointer to symbol table
                 EC4 number of symbols
                  F0 size of optional header
                  27 characteristics
                       Relocations stripped
                       Executable
                       Line numbers stripped
                       Application can handle large (>2GB) addresses
    

提交回复
热议问题