当前位置: 首页 > article >正文

避坑指南:在Ubuntu for Raspberry上安装OpenPLC运行时,搞定WiringPi.h报错

避坑指南在Ubuntu for Raspberry上安装OpenPLC运行时搞定WiringPi.h报错树莓派爱好者们常常喜欢尝试不同的操作系统Ubuntu for Raspberry Pi凭借其稳定性和丰富的软件生态成为不少开发者的选择。然而当你在树莓派上运行Ubuntu系统并尝试安装OpenPLC运行时可能会遇到一个令人头疼的问题——编译过程中提示WiringPi.h头文件缺失。这个问题看似简单却让不少开发者耗费数小时排查。本文将带你深入分析问题根源并提供一套经过验证的解决方案。1. 问题背景与诊断OpenPLC作为一个开源PLC解决方案其运行时环境需要与硬件底层交互而WiringPi库正是实现树莓派GPIO控制的关键组件。当你在Raspberry Pi OS上安装OpenPLC时一切都很顺利因为官方系统对硬件支持最为完善。但在Ubuntu系统上情况就变得复杂起来。执行安装命令后系统报错通常如下fatal error: wiringPi.h: No such file or directory这个错误的本质在于Ubuntu的wiringpi软件包只包含运行时组件不包含开发所需的头文件和静态库OpenPLC的编译过程需要完整的开发环境支持官方安装脚本background_installer.sh假设系统会安装完整的wiringpi开发包提示这个问题不仅影响OpenPLC任何需要访问树莓派GPIO的开发项目在Ubuntu系统上都可能遇到类似情况2. 解决方案手动编译安装WiringPi既然系统仓库提供的软件包不完整我们就需要从源码构建WiringPi。以下是经过验证的完整步骤2.1 准备工作首先确保系统已安装必要的构建工具sudo apt update sudo apt install git build-essential2.2 获取WiringPi源码官方仓库已经归档我们需要使用最终发布的2.50版本git clone --branch final_official_2.50 https://github.com/WiringPi/WiringPi.git cd WiringPi2.3 编译与安装WiringPi提供了简单的构建脚本./build编译完成后验证安装是否成功gpio -v如果看到版本信息输出说明安装成功。此时系统中应该已经包含以下关键文件/usr/local/include/wiringPi.h/usr/local/lib/libwiringPi.so3. 解决OpenPLC编译问题完成WiringPi安装后回到OpenPLC的安装目录重新运行安装脚本cd ~/OpenPLC_v3 ./install.sh rpi这次编译应该能够顺利完成。如果仍然遇到问题可以尝试以下额外步骤3.1 检查链接库路径确保系统能够找到新安装的库sudo ldconfig3.2 验证头文件位置确认wiringPi.h确实存在于标准包含路径中find /usr -name wiringPi.h4. 系统配置优化为了确保长期稳定性建议进行以下系统级配置4.1 固定WiringPi版本防止后续系统更新覆盖手动安装的版本sudo apt-mark hold wiringpi4.2 环境变量设置在某些情况下可能需要明确指定库路径export LD_LIBRARY_PATH/usr/local/lib:$LD_LIBRARY_PATH可以将这行添加到~/.bashrc文件中实现永久生效。5. 替代方案评估如果手动编译WiringPi仍然无法解决问题可以考虑以下替代方案5.1 使用pigpio库pigpio是另一个流行的GPIO访问库OpenPLC也支持sudo apt install pigpio然后在OpenPLC硬件设置中选择Raspberry Pi (pigpio)选项。5.2 容器化部署考虑使用Docker容器来隔离环境依赖docker run -d --privileged --name openplc -p 8080:8080 thiagoralves/openplc-raspberry这种方法避免了系统库冲突问题但牺牲了一些性能。6. 深度技术解析理解这个问题的本质有助于预防类似情况。Ubuntu for Raspberry Pi与Raspberry Pi OS的主要差异在于特性Raspberry Pi OSUbuntu for Raspberry Pi内核优化专为树莓派优化通用ARM优化硬件支持完整GPIO支持基础GPIO支持软件仓库包含树莓派专用包标准Ubuntu仓库更新策略跟随树莓派硬件跟随Ubuntu发布周期这种差异导致了一些树莓派专用软件在Ubuntu上需要额外配置才能正常工作。7. 实际应用测试完成安装后建议运行一个简单的测试程序验证功能是否正常在OpenPLC Editor中创建一个新项目添加一个简单的梯形图逻辑例如当输入0.0为高电平时输出0.0也为高电平将程序上传到运行时使用GPIO命令手动控制输入引脚gpio mode 0 in gpio mode 2 out gpio write 2 1 # 模拟输入信号观察输出引脚状态变化这种端到端的验证可以确保整个软件栈工作正常。8. 性能调优建议在Ubuntu系统上运行OpenPLC可能会遇到性能问题以下调优措施值得尝试关闭不必要的系统服务sudo systemctl disable --now snapd.service sudo systemctl disable --now apt-daily-upgrade.timer调整CPU调度策略echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor增加交换空间针对内存不足情况sudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile9. 长期维护策略为了确保系统长期稳定运行建议定期检查WiringPi库更新备份关键配置文件sudo tar czvf openplc_backup.tar.gz /usr/local/lib/libwiring* /usr/local/include/wiring*监控系统日志中的GPIO相关错误journalctl -u openplc -f10. 社区资源利用遇到难以解决的问题时可以求助于以下资源OpenPLC官方论坛https://openplc.discussion.community/WiringPi GitHub仓库的Issues页面树莓派Ubuntu社区论坛在寻求帮助时提供以下信息会大大提高解决效率完整的错误日志gpio -v输出uname -a输出OpenPLC版本信息我在多个树莓派项目中使用这套解决方案发现最关键的还是确保开发环境的一致性。建议团队开发时建立标准化的环境配置文档避免每个成员都踩同样的坑。

相关文章:

避坑指南:在Ubuntu for Raspberry上安装OpenPLC运行时,搞定WiringPi.h报错

避坑指南:在Ubuntu for Raspberry上安装OpenPLC运行时,搞定WiringPi.h报错 树莓派爱好者们常常喜欢尝试不同的操作系统,Ubuntu for Raspberry Pi凭借其稳定性和丰富的软件生态成为不少开发者的选择。然而,当你在树莓派上运行Ubun…...

Oumuamua-7b-RP效果展示:用户提及‘桜’过去经历时触发背景故事碎片化回忆响应

Oumuamua-7b-RP效果展示:用户提及桜过去经历时触发背景故事碎片化回忆响应 1. 项目概述 Oumuamua-7b-RP 是一款专为日语角色扮演对话设计的Web界面大语言模型,基于Mistral-7B架构开发。这个模型特别擅长通过对话触发角色的碎片化记忆,为用户…...

新概念英语第二册33_Out of the darkness

Lesson 33: Out of the darkness 脱离黑暗Key words and expressions darkness 黑暗explain 解释,叙述set out 出发,动身coast 海岸towards evening 天将黑时ahead adj. 在前面cliff …...

Windows Server 2019上搞定Connectify Dispatch网卡聚合,保姆级避坑指南

Windows Server 2019网卡聚合实战:Connectify Dispatch配置全解析与深度优化 在当今数据中心和服务器环境中,网络带宽已成为关键性能瓶颈。对于运行Windows Server 2019的管理员而言,如何充分利用多网卡硬件资源实现带宽叠加和智能分流&#…...

Mac窗口置顶终极指南:5分钟掌握Topit提升你的工作效率

Mac窗口置顶终极指南:5分钟掌握Topit提升你的工作效率 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 在Mac上工作时,你是否经常需要同时…...

cuBLASLt动态切分策略失效?揭秘CUDA 13.1+Triton混合部署下batch size=1时的$0.83/千token隐性溢价

更多请点击: https://intelliparadigm.com 第一章:cuBLASLt动态切分策略失效的底层归因 cuBLASLt 的动态切分(dynamic split)机制旨在根据运行时 GPU 资源状态(如 SM 利用率、显存碎片、并发 kernel 数量)…...

健康有益社区慢病智能监测站:破解基层慢病管理瓶颈,践行主动健康

一、慢病防控形势与基层管理瓶颈据国家心血管病中心估算,我国高血压前期人群已超过6亿,10年内进展为高血压的风险超过50%;糖尿病、高血脂、骨质疏松等慢病患病人群同样持续扩大。传统的社区慢病管理依赖人工随访,效率低、覆盖面窄…...

BLE蓝牙5.x模块:技术演进、核心性能与深度应用指南

蓝牙技术作为物联网(IoT)领域的基石通信协议,凭借其低功耗、高兼容性和灵活组网能力,持续推动着智能家居、工业自动化、可穿戴设备等场景的创新。随着BLE(低功耗蓝牙)5.x标准的迭代,其在传输速率…...

终极macOS窗口置顶工具:Topit完整指南,让你的多任务效率提升300%

终极macOS窗口置顶工具:Topit完整指南,让你的多任务效率提升300% 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 你是否经常在Mac上工作…...

AIGlasses_for_navigation高级特性:利用LSTM处理时序导航决策

AIGlasses_for_navigation高级特性:利用LSTM处理时序导航决策 你有没有遇到过这种情况?家里的扫地机器人或者手机导航,有时候会像个没头苍蝇一样,在一个地方来回打转,就是走不出去。或者,它明明看到前面有…...

MATLAB实现高斯光束到平顶光束转变:基于GS算法或直接计算SLM相位分布

MATLAB实现高斯光束到平顶光束的转变 基于GS算法或者直接计算SLM相位分布。一、程序核心目标 该程序基于Gerchberg-Saxton(GS)算法与角谱传输理论,实现光束整形功能,通过迭代优化空间光调制器(SLM)的相位分…...

LiuJuan Z-Image应用案例:如何为心理学实验批量生成人物刺激材料?

LiuJuan Z-Image应用案例:如何为心理学实验批量生成人物刺激材料? 在心理学、认知科学和社会学研究中,实验刺激材料的质量与一致性至关重要。无论是研究面孔识别、情绪感知,还是社会刻板印象,研究者都需要一组在年龄、…...

maven涉及的配置

1、settings.xml&#xff08;1&#xff09;本地仓库<localRepository>d:\temp\repo</localRepository>&#xff0c;用 <localRepository>括起来的表示本地仓库的位置。&#xff08;2&#xff09;镜像源<mirrors><mirror><id>nexus-aliyun&…...

性能优化-MySQL索引

1. 为什么要使用索引&#xff1f;使用索引是为了提高数据检索的效率。当数据量很大时&#xff0c;如果没有索引&#xff0c;数据库系统需要逐条扫描数据来找到符合条件的记录&#xff0c;这样会消耗大量的时间和资源。而使用索引可以通过创建特定的数据结构&#xff0c;将数据按…...

手把手教你用STM32CubeMX配置TM7711高精度ADC(附完整代码与电平转换电路详解)

STM32CubeMX实战&#xff1a;TM7711高精度ADC配置与电平转换电路设计全解析 在嵌入式开发领域&#xff0c;ADC&#xff08;模数转换器&#xff09;的精度往往决定了整个系统的测量上限。当STM32内置的12位ADC无法满足需求时&#xff0c;外接高精度ADC芯片成为工程师的必然选择。…...

G-Helper终极指南:释放华硕笔记本隐藏性能的简单秘诀

G-Helper终极指南&#xff1a;释放华硕笔记本隐藏性能的简单秘诀 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sca…...

银河麒麟系统修改UTF-8字符集

银河麒麟V10&#xff0c;运行某软件后&#xff0c;部分字体显示不出来&#xff0c;银河麒麟系统默认使用的是UTF-8编码&#xff0c;某软件部分字体使用的是GB18030编码&#xff0c;需要修改系统默认字符集来兼容软件的GB18030。1、处理过程执行: vi /root/.bashrc编辑文件&…...

别再只调广播间隔了!NRF51/52低功耗实战:硬件DC/DC配置与这些常被忽略的软件细节

NRF51/52低功耗深度优化&#xff1a;从硬件稳压到软件陷阱的全方位实战指南 在物联网设备开发中&#xff0c;低功耗设计从来都不是简单的参数调整游戏。许多开发者止步于广播间隔和连接参数的优化&#xff0c;却忽略了硬件基础配置和那些隐藏在代码深处的"功耗杀手"。…...

Qwen3.5-2B开源大模型:支持离线运行的轻量级多模态AI部署方案

Qwen3.5-2B开源大模型&#xff1a;支持离线运行的轻量级多模态AI部署方案 1. 项目概述 Qwen3.5-2B是一款仅20亿参数的轻量级多模态大语言模型&#xff0c;专为本地离线运行优化设计。相比动辄数百亿参数的大模型&#xff0c;这款模型在保持出色性能的同时&#xff0c;显著降低…...

HarmonyOS 智能填充(AutoFill)深度解析:从原理到鸿蒙6实战适配

HarmonyOS 智能填充&#xff08;AutoFill&#xff09;深度解析&#xff1a;从原理到鸿蒙6实战适配 每次面对应用里那堆繁琐的登录页、注册表单或是收货地址填写&#xff0c;作为开发者的我们总是带着一种矛盾的复杂心态。一方面&#xff0c;深知这些是业务中不可或缺的关键转化…...

别再到处找封装了!手把手教你用立创EDA建立个人专属元件库(附0603电阻完整案例)

立创EDA实战&#xff1a;从零构建高复用性个人元件库的完整方法论 在电子设计领域&#xff0c;效率往往隐藏在那些被忽视的细节中。想象一下这样的场景&#xff1a;深夜赶项目时突然需要用一个特殊封装的传感器&#xff0c;翻遍全网找不到合适的模型&#xff1b;团队协作时因为…...

联盟链:FISCO BCOS - Hyperledger Fabric

联盟链技术正成为企业级区块链应用的核心解决方案&#xff0c;其中FISCO BCOS和Hyperledger Fabric作为两大主流框架&#xff0c;以其高性能、可控性和隐私保护能力备受关注。FISCO BCOS由中国金链盟主导开发&#xff0c;专注于金融场景&#xff1b;Hyperledger Fabric则由IBM贡…...

从3ds Max无缝迁移到Blender:BsMax插件让3D艺术家零成本过渡

从3ds Max无缝迁移到Blender&#xff1a;BsMax插件让3D艺术家零成本过渡 【免费下载链接】BsMax BsMax Blender Addon (UI simulator/ Modeling/ Rigg & Animation/ Render Tools and ... 项目地址: https://gitcode.com/gh_mirrors/bs/BsMax 你是否曾经因为工作需要…...

工具很多,好找的不多见:「工具侠」已为你备好 3000+ 款优质产品

做内容、做设计、写代码、搞增长…… everyday 都要和各种「小工具」打交道。真正让人头疼的&#xff0c;往往不是「没有工具」&#xff0c;而是不知道哪一个好用、值不值得试、适不适合自己。 收藏夹越堆越多&#xff0c;最后多半变成「想用时想不起来、想起来又懒得翻」。 工…...

数字孪生进入实景时代,镜像视界引领变革 以视频原生能力,构建行业新一代底座

前言 历经多年发展&#xff0c;数字孪生行业正迎来根本性范式革命&#xff1a; 从人工建模、虚拟仿真的传统模式&#xff0c;全面迈入真实场景、实时联动、空间可算的实景孪生时代。 过往脱离现场、重展示轻实战、静态固化的虚拟孪生&#xff0c;已无法匹配城市治理、工业安全、…...

终极指南:3步搞定Amlogic盒子RTL8822CS无线网卡驱动难题

终极指南&#xff1a;3步搞定Amlogic盒子RTL8822CS无线网卡驱动难题 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588…...

WeDLM-7B-Base镜像免配置:多语言界面支持(中/英/日)与本地化实践

WeDLM-7B-Base镜像免配置&#xff1a;多语言界面支持&#xff08;中/英/日&#xff09;与本地化实践 1. 开箱即用的多语言模型体验 WeDLM-7B-Base是一款基于扩散机制的高性能语言模型&#xff0c;拥有70亿参数规模。与传统的自回归模型不同&#xff0c;它采用创新的并行解码技…...

机器学习数据预处理网格搜索技术详解与实践

1. 数据预处理网格搜索技术详解 在机器学习建模过程中&#xff0c;数据预处理的质量直接影响模型性能。传统的数据预处理方法需要分析师对数据集进行深入研究和算法特性理解&#xff0c;这种方法不仅耗时耗力&#xff0c;而且对专业经验要求极高。本文将介绍一种创新的数据预处…...

深度解析:基于异构计算架构的 AI 视频中台(支持 GB28181、RTSP、Docker 部署与源码交付)

1. 架构演进&#xff1a;从“烟囱式”到“解耦异构” 传统安防系统往往是硬件绑定的。换一个边缘芯片&#xff0c;算法就要重写推理逻辑&#xff1b;换一个协议&#xff0c;接入层就要推倒重来。 本平台采用微服务化与容器化架构&#xff0c;将流媒体转发、算法推理、业务逻辑…...

从 “工具” 到 “同事”:企业正在进入智能体驱动的数智化跃迁时代

过去几年&#xff0c;人工智能正以不可逆转的态势&#xff0c;深度渗透企业经营管理的每一个环节。从最初辅助写文案、查数据、做分析的效率工具&#xff0c;到如今主动理解目标、联动系统、自主执行、持续迭代的工作伙伴&#xff0c;AI 正在完成一场从 “辅助支撑” 到 “参与…...