This HOWTO描述了如何修改MinGW的默认GCC规范文件,以便小的辅助规范文件可以指定要使用的msvcrt版本。
当应用相同的技术时,我遇到了两个问题:
为了完整性'这里是默认规范文件中的相关行:
*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
似乎可以解决缺少定义的问题。