Visual Studio 2019对应的Linux头文件位置在哪里
解答
sys/ioctl.h、sys/uio.h 均属于Linux标准glibc库提供的系统头文件,不包含在VS本地的C++ Linux开发组件安装包中,这也是近十年前的旧回答不再适用的核心原因:旧版VS的Linux开发采用本地交叉编译架构,会默认预装Linux头文件,而VS2019及之后的新版本已改为基于远程主机/WSL2的原生编译架构,所有Linux环境的头文件、库文件都从你指定的目标编译环境同步获取。
解决步骤
第一步:安装目标编译环境的基础开发组件
首先确保你用来编译的Linux环境(WSL2或远程物理/虚拟机)已经安装了基础的系统头文件:
- 对于Debian/Ubuntu系(含WSL2下的对应发行版),执行命令:
sudo apt update && sudo apt install build-essential libc6-dev - 对于RHEL/CentOS/Fedora系,执行命令:
sudo dnf install glibc-devel make gcc-c++
第二步:触发VS头文件同步
新版VS会将远程Linux环境的头文件缓存到本地用于智能提示和编译检索,找不到头文件通常是缓存未同步导致:
- 打开项目属性页,依次进入「配置属性 > 常规」,确认平台工具集选择正确:
- 用WSL2编译选
GCC for Windows Subsystem for Linux - 用远程Linux编译选
GCC for Remote Linux
- 用WSL2编译选
- 右键项目根目录,依次选择「Linux和WSL」> 「从远程下载头文件」,等待同步完成后重启VS即可。
- 如果手动同步后仍找不到,可手动添加头文件路径到项目包含目录:
进入「配置属性 > VC++ 目录 > 包含目录」,添加对应缓存路径:- WSL2默认缓存路径:
C:\Users\<你的Windows用户名>\AppData\Local\Microsoft\Linux\HeaderCache\1.0\<发行版唯一标识>\usr\include - 远程Linux默认缓存路径:
C:\Users\<你的Windows用户名>\AppData\Local\Microsoft\Linux\HeaderCache\1.0\<远程主机名>\usr\include
- WSL2默认缓存路径:
第三步:CUDA项目额外配置
编译CUDA程序需要额外做两处配置:
- 确认目标Linux环境已经安装对应版本的CUDA Toolkit,安装完成后可执行
ls /usr/local/cuda/include确认CUDA头文件存在 - 打开项目属性页,进入「CUDA C/C++ > 常规」,在「附加包含目录」中添加远程CUDA头文件路径:
/usr/local/cuda/include
内容的提问来源于stack exchange,提问作者Grant Curell
相关产品推荐
相关产品推荐

