VS2017 设置默认关闭 Spectre 缓解(以及修复 CMake,使其无法找到编译器)

 2024-02-25 05:04:25  阅读 0

介绍

据百度介绍,缓解是针对硬件漏洞的一种软件规避方法。 根据微软的说法,它默认是关闭的(MSVC编译器选项/)。 介绍结束。

据说安装WDK后,会有一个bug导致缓解默认开启。 如果没有安装带有缓解措施的库,编译会失败,如下图:

解决方案一

简单安装一个带有缓解功能的库,就是缓解漏洞的安全风险。 安装它来达到缓解效果也不是什么坏事。 直接点击【修改】、【单个组件】就会出现一个带有缓解的库:

是否要安装Arm版本取决于您的需要。 应该适合、IOS、嵌入式开发。 PC一般不是ARM。

解决方案2

为难找到一个论坛,有人说安装了WDK,里面的一些prop文件开启了缓解选项,导致VS默认开启缓解。

在F:\\2017\\\IDE\VC\\\{ARM|AM64|Win32|x64}\\\.Cpp.WDK.props

中间目录根据不同平台有4个子目录。 我只更改了 Win32 和 x64,保留了 ARM 的。 你可以弄清楚。 ++打开.Cpp.WDK.props文件,内容如下:



  
    <_NT_TARGET_VERSION_WIN10_RS5>0xA000006
    <_NT_TARGET_VERSION_WIN10_RS4>0xA000005
    <_NT_TARGET_VERSION_WIN10_RS3>0xA000004
    <_NT_TARGET_VERSION_WIN10_RS2>0xA000003
    <_NT_TARGET_VERSION_WIN10_RS1>0xA000002
    <_NT_TARGET_VERSION_WIN10_TH2>0xA000001
    <_NT_TARGET_VERSION_WIN10>0x0A00
    <_NT_TARGET_VERSION_WINV63>0x0603
    <_NT_TARGET_VERSION_WIN8>0x0602
    <_NT_TARGET_VERSION_WIN7>0x0601
    <_NT_TARGET_VERSION_VISTA>0x0600
    <_NT_TARGET_VERSION_LONGHORN>0x0600
    <_NT_TARGET_VERSION_NT4>0x0400
  
  
  

注释掉最接近的,重新启动 VS,新项目将默认禁用缓解功能。 如果旧项目在属性页上启用,它将覆盖此处的设置,您可能仍需要手动更改。

CMake

The CXX compiler identification is unknown
The C compiler identification is unknown
CMake Error at CMakeLists.txt:6 (project):
  No CMAKE_CXX_COMPILER could be found.
CMake Error at CMakeLists.txt:6 (project):
  No CMAKE_C_COMPILER could be found.
Configuring incomplete, errors occurred!
See also "H:/uchardet-0.0.7/build/CMakeFiles/CMakeOutput.log".
See also "H:/uchardet-0.0.7/build/CMakeFiles/CMakeError.log".

行号不一定是第6行。反正编译器识别不了,找不到。 我认真对待它。 直到我按照提示查看 .log 并看到它说缓解已启用,我才想起如果启用了它就会编译。 然而,我意识到并不是CMake真的不识别MSVC,而是CMake用来测试编译器编译的示例代码。 但是,CMake 无法识别编译器。 按照上述方法处理后即可识别。

标签: 缓解 启用 默认

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码