WSL环境下编译代码报错:找不到wiringPi.h库求解决方案
解决WSL下编译wiringPi代码时的链接错误
问题本质
你遇到的cannot find wiringPi是链接器错误,并非头文件缺失——你之前仅配置了头文件路径,但链接阶段需要明确指定要关联的wiringPi库文件,且WSL作为Linux子系统,需遵循Linux的库安装与编译逻辑。
分步解决
1. 确认WSL中已正确安装wiringPi
WSL是Linux环境,需用Linux包管理器安装库:
- 打开WSL终端执行:
sudo apt update sudo apt install wiringpi - 验证安装结果:
- 检查头文件:
ls /usr/include | grep wiringPi,能看到wiringPi.h即表示头文件存在 - 检查库文件:
ls /usr/lib | grep wiringPi,能看到libwiringPi.so即表示库文件存在
- 检查头文件:
2. 修正编译配置(或直接用终端编译)
方式一:调整VS针对WSL的项目配置
- 头文件路径:在项目→配置属性→C/C++→常规→附加包含目录中添加
/usr/include(wiringPi头文件默认安装路径) - 库文件配置:
- 链接器→常规→附加库目录:添加
/usr/lib(wiringPi库默认安装路径) - 链接器→输入→附加依赖项:添加
wiringPi(注意是库名称,而非头文件名)
- 链接器→常规→附加库目录:添加
- 确保项目的平台工具集选择WSL对应的Linux工具链(如
GCC for Ubuntu)
方式二:直接用WSL终端编译(更简洁可靠)
跳过VS图形配置,在WSL终端直接用g++编译:
g++ your_code.cpp -o temp_reader -lwiringPi
-lwiringPi参数会告诉链接器关联wiringPi库,系统会自动识别已安装的头文件与库文件位置
3. 关键提醒:WSL的局限性
wiringPi是为树莓派物理GPIO设计的库,WSL本身无直接访问硬件GPIO的权限。即便编译成功,运行时wiringPiSetup()会返回-1,无法正常读取GPIO数据。若要操作树莓派GPIO,建议直接在树莓派的Linux系统上编译运行。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

