msvcr * mingw-w64的spec文件

时间:2015-07-16 07:50:30

标签: windows mingw mingw-w64

This HOWTO描述了如何修改MinGW的默认GCC规范文件,以便小的辅助规范文件可以指定要使用的msvcrt版本。

当应用相同的技术时,我遇到了两个问题:

  1. MinGW-w64没有与libmsvcr * .a版本匹配的任何libmoldname * .a(其中*为80,90,100,110等)。这些是缺失还是没有必要?
  2. 通过msvcrt_version定义的-D__MSVCRT_VERSION __ = 0x * 0不会生效。使用规范文件 ,因为dumpbin告诉我现在链接到不同的msvcrt版本,但是定义不起作用。如果我通过命令行直接定义它,但它错过了spec文件的要点。有没有办法解决这个问题?
  3. 为了完整性'这里是默认规范文件中的相关行:

    *cpp:
    %(msvcrt_version) %{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT} %{municode:-DUNICODE} %{!no-pthread:-D_REENTRANT} %{pthread:-U_REENTRANT}
    
    *libgcc:
    %{mthreads:-lmingwthrd} -lmingw32      %{static|static-libgcc:-lgcc -lgcc_eh}  %{!static:    %{!static-libgcc:      %{!shared:        %{!shared-libgcc:-lgcc -lgcc_eh}        %{shared-libgcc:-lgcc_s -lgcc}       }      %{shared:-lgcc_s -lgcc}     }   }     -l%(moldname) -lmingwex -l%(msvcrt)
    
    *msvcrt:
    msvcrt
    
    *msvcrt_version:
    
    
    *moldname:
    moldname
    

    我的msvcr110 spec文件的内容(由于问题1,moldname110已经被moldname替换):

    *msvcrt:
    msvcr110
    
    *msvcrt_version:
    -D__MSVCRT_VERSION__=0x1100
    
    *moldname:
    moldname
    

    修改

    %(msvcrt_version)添加到*cc1*cc1plus而非*cpp似乎可以解决缺少定义的问题。

0 个答案:

没有答案