Linux上通过Wine安装CODESYS开发环境完整指南

发布时间:2026/9/25 1:34:30
Linux上通过Wine安装CODESYS开发环境完整指南 1. 为什么要在Linux上折腾CODESYS把CODESYS装到Linux上这件事在工控圈里一直有点“非主流”。大多数人第一次接触CODESYS都是在Windows环境下双击安装包、一路下一步半小时就能跑起来。但当你手头只有一台Linux工控机、一台国产化平台的边缘网关或者公司要求整套开发环境必须跑在国产操作系统上时问题就来了——CODESYS官方并没有提供原生的Linux桌面版开发环境。我最早动这个念头是在一个边缘计算项目上。现场部署的是一台基于ARM架构的国产化设备系统是麒麟客户明确要求PLC逻辑的开发调试也要在这台设备上完成不能额外配一台Windows笔记本。当时第一反应是找官方有没有Linux版本翻了一圈发现CODESYS Control for Linux SL是有的那是运行时Runtime负责跑PLC程序但CODESYS Development System也就是我们常说的IDE开发环境只有Windows版。这就意味着想在Linux上写CODESYS程序必须借助Wine这个兼容层来跑Windows版的IDE。这里先把几个核心概念理清楚不然后面容易绕晕。CODESYS Development System是你用来写梯形图、ST语言、配置IO的那个图形化开发环境它本身是个Windows程序。CODESYS Runtime是跑在目标设备上的执行引擎负责实际执行PLC逻辑这个是有Linux原生版本的。Wine是一个在Linux上运行Windows程序的兼容层它不是模拟器而是把Windows的API调用翻译成Linux能理解的调用。三者关系搞明白了整个安装思路就清晰了用Wine跑IDE用原生Runtime跑程序两者通过网络通信。这套方案适合什么人一是做国产化替代项目的工程师现场只有Linux环境二是搞边缘计算、想在ARM设备上直接开发调试的三是单纯不想为了一个CODESYS再装个Windows虚拟机的。如果你只是日常在Windows上开发那没必要折腾这个直接用Windows版体验最好。但如果你确实被环境限制住了下面这套流程我踩过的坑、验证过的步骤可以直接抄。2. 安装前的环境准备与方案选型2.1 系统与硬件的最低要求在动手之前先把环境底子打牢。CODESYS IDE本身不算特别吃资源但套上Wine之后资源开销会上去一截。我实测下来最低配置建议是4核CPU、8GB内存、50GB可用磁盘空间。如果是在虚拟机上跑内存最好给到8GB以上否则Wine在加载大型项目时会明显卡顿。操作系统方面Ubuntu 20.04/22.04 LTS是最省心的选择社区资料多Wine的兼容性也最好。如果你用的是麒麟、统信UOS这类国产系统底层大多是Debian或Ubuntu系思路一样但软件源和包管理可能有差异后面会单独说。架构上x86_64是最成熟的ARM64也能跑但Wine的ARM64支持相对折腾需要额外的转译层这个后面细讲。有一点要特别注意不要用太新的发行版。我试过在Ubuntu 24.04上装Wine的某些依赖和系统自带的库版本冲突折腾了半天。LTS版本经过时间验证稳定性最好。另外确保你的系统已经更新到最新sudo apt update sudo apt upgrade -y2.2 Wine方案与虚拟机的取舍这里有个关键决策到底是用Wine还是干脆装个Windows虚拟机两种方案我都用过各有适用场景。Wine方案的优势是轻量、启动快、和Linux系统集成度高文件系统直接互通不用在虚拟机和主机之间来回传文件。缺点是兼容性偶尔出问题某些Windows组件需要额外配置而且CODESYS的某些高级功能比如特定的在线调试视图在Wine下可能显示异常。虚拟机方案比如VirtualBox或VMware的优势是兼容性完美CODESYS在Windows里怎么跑虚拟机里就怎么跑不用担心各种奇怪的报错。缺点是资源开销大一个Windows虚拟机至少吃掉4GB内存而且文件传输、网络配置都多一层。如果你只是偶尔用一下虚拟机更省心如果你要长期在Linux上开发Wine方案更值得投入时间配置。我的建议是先试Wine如果核心功能都能跑通就用Wine如果遇到无法绕过的兼容性问题再退回虚拟机。下面主要讲Wine方案因为这是大多数人想要的答案。2.3 Wine版本的选择与安装Wine的版本选择很关键。稳定版Stable最保险但可能对某些新API支持不够开发版Development功能新但偶尔有回归问题Staging版介于两者之间包含了一些实验性补丁。我实测下来Wine 8.x的Staging版对CODESYS的支持最好既能跑起来又不会太激进。在Ubuntu上安装Wine官方源里的版本通常偏旧建议用WineHQ的官方源sudo dpkg --add-architecture i386 sudo mkdir -pm755 /etc/apt/keyrings sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources sudo apt update sudo apt install --install-recommends winehq-staging装完之后验证一下wine --version如果输出类似wine-8.21 (Staging)就对了。这里有个坑32位支持必须开启因为CODESYS的安装程序是32位的即使你的系统是64位也需要i386架构支持。上面第一步dpkg --add-architecture i386就是干这个的漏了这步后面安装会报错。2.4 国产系统与ARM64的特殊处理如果你用的是麒麟或统信UOSWine的安装方式不太一样。这些系统通常自带或推荐“麒麟Wine助手”这类工具它封装了Wine的配置对国产系统做了适配。我试过在麒麟V10上用麒麟Wine助手装CODESYS整体流程比手动配Wine简单但版本可能偏旧遇到问题不好排查。ARM64架构是另一个难点。ARM64上跑x86的Windows程序需要Wine配合Box86/Box64这样的转译层。这套组合的配置复杂度明显上升而且性能有损耗。如果你的设备是ARM64我的建议是优先考虑用CODESYS Runtime的原生ARM64版本跑程序IDE开发放在x86机器上通过远程连接调试。如果非要在一台ARM64设备上跑IDE那就要做好折腾Box86/Box64的准备网上有相关的安装包和教程但稳定性因设备而异。3. CODESYS安装的完整实操流程3.1 创建独立的Wine前缀这是整个安装过程中最重要的一步也是最容易被忽略的。不要直接用默认的Wine前缀~/.wine装CODESYS。默认前缀里可能已经有其他Windows程序库文件版本混杂很容易冲突。正确做法是为CODESYS单独创建一个前缀export WINEPREFIX~/.codesys_wine export WINEARCHwin32 winecfgWINEARCHwin32指定创建32位前缀因为CODESYS安装程序是32位的。执行winecfg会弹出Wine配置窗口第一次运行会初始化前缀稍等片刻。在配置窗口里把Windows版本设置为Windows 10这能提高CODESYS的兼容性。注意WINEPREFIX和WINEARCH这两个环境变量必须在每次操作CODESYS前都设置好否则Wine会去找默认前缀。建议写进一个脚本里每次用的时候source一下。创建好前缀后安装一些必要的Windows组件。CODESYS依赖.NET Framework和Visual C运行库用winetricks来装winetricks -q dotnet48 vcrun2019 corefontsdotnet48是.NET Framework 4.8CODESYS的某些模块需要它vcrun2019是Visual C 2019运行库corefonts装一些基础字体不然界面中文可能显示成方块。这一步耗时比较长尤其是dotnet48下载和安装可能要十几分钟耐心等。3.2 安装CODESYS Development System组件装好后就可以跑CODESYS安装程序了。从官网下载CODESYS Development System的安装包注意选32位版本。下载下来是个.exe文件假设叫CODESYS_Development_System.exe放到一个路径不含中文和空格的目录下比如~/codesys_install/。cd ~/codesys_install wine CODESYS_Development_System.exe安装程序启动后界面和Windows下基本一样。一路下一步安装路径保持默认即可。安装过程中可能会弹出一些缺少组件的提示如果之前winetricks装全了一般不会出问题。安装完成后不要急着启动先做几件事。第一检查安装目录下有没有生成快捷方式。Wine会在~/.local/share/applications/wine/Programs/下生成.desktop文件但通常不太完善。我习惯手动创建一个启动脚本#!/bin/bash export WINEPREFIX~/.codesys_wine export WINEARCHwin32 cd ~/.codesys_wine/drive_c/Program\ Files/CODESYS\ Development\ System\ 3.5/ wine CODESYS.exe保存为~/start_codesys.sh加执行权限。这样每次启动不用记那些环境变量。第二处理中文显示问题。Wine默认的字体渲染有时候会让CODESYS界面里的中文变成乱码或方块。解决办法是把Windows的字体复制到Wine前缀里或者用winetricks装wenquanyi字体。我一般直接装winetricks -q cjkfonts能解决大部分中文显示问题。3.3 首次启动的配置与验证第一次启动CODESYS可能会比较慢Wine需要初始化一些东西。启动后先别急着建项目做几个验证界面是否正常显示菜单栏、工具栏有没有缺失新建一个标准项目选一个简单的PLC型号看能不能正常创建打开设备树看设备描述文件能不能加载试着写一段简单的ST代码编译一下看有没有报错如果这几步都过了说明基本环境没问题。如果某一步卡住多半是缺少某个Windows组件用winetricks补装对应的库。这里有个经验CODESYS的在线帮助和某些HTML视图在Wine下可能显示空白这是因为Wine内置的浏览器组件不完整。如果遇到这种情况可以装winetricks -q ie8或者winetricks -q webview2但webview2在Wine下的支持一直不太稳定有时候装了反而更糟。我的建议是如果只是帮助文档显示不了不影响核心开发功能可以先不管需要查文档的时候用浏览器看在线版。3.4 Runtime的安装与连接配置IDE跑起来只是第一步真正要让PLC程序跑起来还需要Runtime。CODESYS Control for Linux SL是官方提供的Linux原生Runtime支持x86_64和ARM64。安装方式通常是通过.deb包或者直接解压运行。以.deb包为例sudo dpkg -i codesyscontrol_linux_*.deb安装完成后Runtime会作为系统服务运行。检查服务状态sudo systemctl status codesyscontrol如果服务没起来看日志排查journalctl -u codesyscontrol -n 50Runtime默认监听端口是1217用于CODESYS IDE连接和11740用于Web可视化。确保防火墙放行这些端口。然后在IDE里配置连接在设备树里右键点击设备选择“添加设备”找到“CODESYS Control for Linux SL”添加后配置IP地址。如果IDE和Runtime在同一台机器上IP填127.0.0.1如果在不同机器上填Runtime所在机器的IP。注意IDE和Runtime的版本要匹配。如果IDE是3.5 SP17Runtime最好也是3.5 SP17对应的版本版本差异过大可能导致连接失败或功能异常。连接成功后就可以像在Windows下一样把程序下载到Runtime里运行了。这里有个小技巧在Linux上Runtime的日志和配置文件通常在/etc/CODESYSControl/和/var/log/下调试的时候多看看日志能省很多时间。4. 常见报错与排查技巧实录4.1 Wine相关报错速查Wine下跑CODESYS报错五花八门但常见的就那么几类。我整理了一个速查表遇到问题先对照着看报错现象可能原因解决方法安装程序启动即崩溃缺少32位支持或Wine版本不对确认dpkg --add-architecture i386已执行换Wine Staging版界面中文显示为方块缺少中文字体winetricks -q cjkfonts或复制Windows字体到前缀提示缺少.NET Frameworkdotnet未安装或版本不对winetricks -q dotnet48必要时先winetricks -q dotnet40再装48编译时报缺少DLLVC运行库缺失winetricks -q vcrun2019在线帮助显示空白Wine浏览器组件不完整装winetricks -q ie8或忽略用浏览器看在线文档启动后闪退前缀损坏或组件冲突删除前缀重建重新走一遍安装流程这里重点说两个高频问题。第一个是dotnet48安装失败。这个组件在Wine下安装经常卡住或报错我的经验是先装dotnet40再装dotnet48成功率会高很多。如果还是不行试试用winetricks -q dotnet48 --force强制安装。第二个是中文乱码。除了装字体还要在winecfg里把区域设置改成中国Locale选zh_CN.UTF-8这样能解决大部分编码问题。4.2 Runtime连接失败的排查思路IDE连不上Runtime这是另一个高频问题。排查顺序建议这样先确认Runtime服务在跑systemctl status codesyscontrol。如果服务没起来看日志找原因常见的是端口被占用或权限问题。再确认网络通不通从IDE所在机器ping一下Runtime的IPtelnet一下1217端口。如果端口不通检查防火墙规则。然后确认版本匹配IDE和Runtime的版本号要对得上。在IDE的“帮助-关于”里看版本在Runtime的日志里看版本不一致就换。最后看网关配置如果Runtime在网关后面或者有多个网卡要确保Runtime绑定的是正确的网卡。在/etc/CODESYSControl/CODESYSControl.cfg里可以配置绑定的IP。我遇到过一次很隐蔽的问题Runtime服务起来了端口也通但IDE就是连不上。查了半天发现是Runtime的许可证没激活试用期过了之后连接会被拒绝。所以别忘了检查Runtime的许可证状态这个在日志里会有明确提示。4.3 性能优化与日常使用建议Wine下跑CODESYS性能肯定不如原生Windows但通过一些调整可以改善体验。关闭Wine的桌面特效和动画在winecfg的“显示”选项卡里取消“允许窗口管理器装饰窗口”和“允许窗口管理器控制窗口”能减少一些渲染开销。给Wine前缀分配足够的内存在winecfg的“驱动器”里把C盘映射到一个SSD上的目录读写速度会快很多。如果项目比较大编译慢可以考虑把CODESYS的编译缓存目录也放到SSD上。默认缓存在前缀的drive_c/users/你的用户名/Temp/下可以做个软链接指向SSD。日常使用中养成定期备份Wine前缀的习惯。Wine前缀出问题是常事一旦坏了重装CODESYS很费时间。我一般每周把~/.codesys_wine打包备份一次出问题直接恢复几分钟搞定。5. 国产化环境下的适配经验5.1 麒麟与统信系统的特殊配置在麒麟V10和统信UOS上装CODESYS和Ubuntu的思路一样但有几个地方要注意。软件源方面国产系统通常有自己的软件源Wine的版本可能和WineHQ的不一样。如果系统源里的Wine版本太旧可以尝试添加WineHQ的源但要注意依赖冲突。我遇到过麒麟系统上装WineHQ的包把系统自带的某个库升级了导致其他软件出问题。所以在国产系统上优先用系统自带的Wine或麒麟Wine助手虽然版本旧但稳定性有保障。麒麟Wine助手是个图形化工具封装了Wine的安装和配置。用它装CODESYS流程简化很多但灵活性差。如果遇到问题排查起来不如手动配Wine方便。我的建议是新手先用麒麟Wine助手能跑起来就行有经验的可以手动配Wine可控性更强。5.2 ARM64平台的可行性分析ARM64平台上跑CODESYS IDE技术上可行但体验打折扣。核心问题是x86到ARM的指令转译Box86/Box64这套方案能跑但性能损耗明显而且不是所有Windows程序都能完美转译。我实测过在RK3588开发板上用Box64跑CODESYS IDE基本界面能出来但编译速度慢复杂项目会卡。如果只是做简单的逻辑开发和调试勉强能用如果是大型项目建议还是用x86机器。更推荐的方案是IDE跑在x86的Linux机器上Runtime跑在ARM64设备上两者通过网络连接。这样IDE的性能有保障Runtime又是原生的整体体验最好。CODESYS的远程连接功能很成熟跨平台调试不是问题。5.3 与汇川等国产PLC的配合汇川的PLC很多是基于CODESYS内核的在Linux上开发汇川PLC思路和标准CODESYS一样。需要注意的是汇川有自己的设备描述文件和库这些需要在IDE里额外安装。安装方法和Windows下一样通过“设备库”或“库管理器”导入。有个坑汇川的某些库文件可能对Wine环境有额外要求比如依赖特定的Windows组件。如果导入库之后编译报错先检查是不是缺少某个运行库用winetricks补装。另外汇川PLC的IP配置和标准CODESYS略有不同在设备树里配置IP的时候要参考汇川的文档别照搬标准CODESYS的配置。我遇到过IP配好了但连不上的情况后来发现是汇川的PLC需要在特定模式下才能接受连接这个在手册里有说明。6. 我踩过的几个大坑第一个坑是Wine前缀混用。一开始图省事直接用默认前缀装CODESYS结果和之前装的其他Windows程序冲突CODESYS启动就崩。后来单独建前缀问题解决。这个教训是每个大型Windows程序都应该有自己的Wine前缀别混在一起。第二个坑是dotnet版本。CODESYS 3.5 SP17需要.NET 4.8但我先装了4.7.2结果安装程序检测到版本不对直接拒绝安装。后来先卸干净再装4.8才通过。所以装之前一定看清楚CODESYS版本对应的.NET要求。第三个坑是Runtime许可证。试用期过了之后IDE能连上Runtime但下载程序时报错提示许可证无效。当时以为是Wine的问题排查了半天才发现是Runtime的许可证到期了。这个在日志里有明确提示但容易被忽略。第四个坑是中文路径。有次把CODESYS装在一个包含中文的目录下结果Wine处理路径时出问题各种找不到文件。后来改成纯英文路径一切正常。所以Wine下的路径尽量用英文别用中文和空格。第五个坑是ARM64上的Box86配置。在ARM设备上折腾Box86按照网上的教程配了半天结果CODESYS能启动但一编译就崩。后来发现是Box86的版本和Wine的版本不匹配换了个组合才跑通。ARM64上的转译层版本匹配比x86上更敏感建议直接用别人验证过的组合别自己乱配。这套方案我前后折腾了大概两周从完全跑不起来到稳定使用中间踩的坑基本都写在这了。现在我的开发环境是一台Ubuntu 22.04的工控机Wine 8.21 StagingCODESYS 3.5 SP17Runtime跑在同一台机器上日常开发调试没问题。偶尔遇到小毛病重启一下Wine前缀或者Runtime服务就能解决。如果你也在Linux上搞CODESYS希望这些经验能帮你少走点弯路。