ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Cygwin 64 位构建环境安装指南(Tera Term 专用工具链)

Cygwin 64 位构建环境安装指南(Tera Term 专用工具链) 桌面应用通信网络【免费下载链接】teraterm项目地址https://gitcode.com/gh_mirrors/te/teraterm点击查看免费下载本指南基于 Tera Term 仓库中的 buildtools/install_cygwin.md 及其配套脚本 install_cygwin.bat 与 install_cygwin.cmake完整讲解如何在项目文件夹内就地安装一套 Tera Term 构建专用的 Cygwin64 环境并额外安装能够产出 32 位可执行文件的交叉编译器最终打通cygterm、cygtool等模块在 Cygwin 工具链下的构建链路。读完本文你将掌握安装脚本的启动方式、CMake 驱动的参数含义、64 位/32 位工具链的取舍原理以及如何用仓库自带的 toolchain 文件验证安装结果。一、这份文档在讲什么就地安装的“构建专用 Cygwin”Tera Term 仓库的buildtools/目录下Cygwin 的安装并不是面向普通用户的系统级安装而是以项目本地文件夹为安装根目录的一套脚本化部署。install_cygwin.md用极简的三条要点概括了整套方案准备一套Tera Term 构建专用的 Cygwin 环境同时安装能够生成32 位可执行文件的 gcc 等编译器从Cygwin Time Machine获取能够输出 32 位 exe 的 gcc、g并附上了该镜像站的入口说明。这套环境的实际使用场景集中在仓库的 cygwin/ 目录cygtermCygwin 的 shell 与 Tera Term 之间的桥接程序、cygtool安装程序使用的 dll、cyglaunch把 Cygwin 安装目录加入 PATH 后启动 cygterm等都依赖 Cygwin 工具链。其中cygterm需要同时产出 64 位与 32 位两种二进制这正是本文档中“64 位环境 Time Machine 32 位编译器”这一组合要解决的现实需求。二、启动入口install_cygwin.bat文档对应的操作入口是 install_cygwin.bat它本身只是一层薄薄的包装脚本核心工作全部委托给 CMake 脚本echo %~dp0\install_cygwin.bat pushd %~dp0 if %CMAKE_COMMAND% ( call ..\ci_scripts\find_cmake.bat ) %CMAKE_COMMAND% -P install_cygwin.cmake rem %CMAKE_COMMAND% -DREMOVE_TMPON -P install_cygwin.cmake if errorlevel 1 ( echo Install Cygwin failed. popd if not %NOPAUSE% 1 pause exit /b 1 ) popd if not %NOPAUSE% 1 pause exit /b 0其中值得注意的几点pushd %~dp0保证脚本在自身所在目录即buildtools/下执行后续所有相对路径都以此为基准若环境变量CMAKE_COMMAND未定义则调用 ci_scripts/find_cmake.bat 自动探测 CMake——它依次检查C:\Program Files\CMake\bin\cmake.exe以及 Visual Studio 2017/2019/2022 各版本Community/Professional/Enterprise内置的 CMake 路径找不到时提示“Install cmake”并退出-P参数表示以脚本模式运行install_cygwin.cmake不生成构建系统纯粹执行文件下载与进程调用被注释掉的那行-DREMOVE_TMPON是可选清理开关以命令行方式传入该变量后CMake 脚本会在安装结束后删除下载的安装包缓存通过NOPAUSE1可抑制批处理结尾的pause适合 CI 场景。三、核心执行体install_cygwin.cmake 的安装流程真正的安装逻辑在 install_cygwin.cmake 中其头部注释给出了两种直接用法# install cygwin in this folder # cmake -P install_cygwin.cmake # cmake -DREMOVE_TMPON -P install_cygwin.cmake脚本开头先确定安装根目录与清理选项set(CYGWIN_ROOT ${CMAKE_CURRENT_LIST_DIR}/cygwin64) if(DEFINED ENV{REMOVE_TMP}) set(REMOVE_TMP ON) else() option(REMOVE_TMP OFF) endif()CYGWIN_ROOT指向脚本所在目录下的cygwin64/文件夹也就是标题“cygwin64 (64bit版) をこのフォルダへインストール把 64 位版 Cygwin 安装到这个文件夹”所指的位置清理选项同时支持环境变量与-D命令行参数两种传入方式若CYGWIN_ROOT路径中出现了cygdrive即当前 cmake 本身运行在 Cygwin 环境中路径被转换为/cygdrive/c/...形式脚本会直接FATAL_ERROR因为这样的路径无法被 Cygwin 的setup.exe --root选项处理——这是脚本对执行环境的一个重要约束请使用 Windows 原生 CMake 运行此脚本。3.1 64 位最新版 Cygwin 的安装脚本锁定了 Cygwin 官方安装器与镜像源# setup-x86_64.exe 2.937 set(SETUP_URL https://cygwin.com/setup-x86_64.exe) set(SETUP_HASH_SHA256 2c9f2fb56e1fb687b5d9680afa8f8b06e6214f0e483096af0eae1946431226c5) set(SETUP ${CYGWIN_ROOT}/setup-x86_64.exe) set(DOWNLOAD_SITE http://mirrors.kernel.org/sourceware/cygwin/) set(PACKAGE ${CMAKE_CURRENT_LIST_DIR}/download/cygwin_package)安装器下载地址为 Cygwin 官方setup-x86_64.exe且脚本记录了该安装器的SHA-256 校验值下载时通过EXPECTED_HASH SHA256...强制校验防止下载到被篡改或版本不符的安装器只有当本地已存在且哈希匹配时才跳过下载避免重复拉取软件包镜像站固定为mirrors.kernel.org/sourceware/cygwin/本地包缓存目录为buildtools/download/cygwin_package/。随后通过setup.exe的静默模式安装软件包execute_process( COMMAND ${SETUP} --quiet-mode --wait --no-admin --root ${CYGWIN_ROOT} --site ${DOWNLOAD_SITE} --local-package-dir ${PACKAGE} --upgrade-also --packages cmake,bash,tar,make,perl,gcc-core,gcc-g,icoutils WORKING_DIRECTORY ${CYGWIN_ROOT} ) # install packages for notify execute_process( COMMAND ${SETUP} --quiet-mode --wait --no-admin --root ${CYGWIN_ROOT} --site ${DOWNLOAD_SITE} --local-package-dir ${PACKAGE} --upgrade-also--packages perl-JSON,perl-LWP-Protocol-https WORKING_DIRECTORY ${CYGWIN_ROOT} )各参数的实战含义如下参数含义--quiet-mode静默安装不弹出交互界面--wait等待安装进程结束再返回保证后续步骤拿到完整结果--no-admin不需要管理员权限配合“就地安装到项目文件夹”的定位--root安装根目录即buildtools/cygwin64/--site软件源镜像站--local-package-dir安装包缓存目录--upgrade-also同时升级已安装的软件包--packages逗号分隔的待装包列表第一批软件包cmake,bash,tar,make,perl,gcc-core,gcc-g,icoutils是构建cygterm的最小编译器与工具集cmake用于 CMake 构建gcc-core/gcc-g提供 Cygwin 原生 64 位编译器对应cygwin/README.md中所说的x86_64-pc-cygwin-gccicoutils用于处理图标资源。第二批软件包perl-JSON,perl-LWP-Protocol-https专为 CI 的“通知”环节服务对应 ci_scripts/notify_discord.pl 这类 Perl 脚本对 JSON/HTTPS 模块的依赖。注意第二段命令中--upgrade-also--packages缺少空格分隔是上游脚本的既有写法语义上仍按--upgrade-also处理。3.2 32 位交叉编译器Cygwin Time Machine为了让cygterm能产出 32 位可执行文件脚本从Cygwin Time Machine镜像站拉取一套旧版的 64 位 Cygwin 安装器用它安装cygwin32-gcc-g交叉编译包#set(SETUP_EXE setup-x86_64-2.909.exe) #set(SETUP_HASH_SHA256 b9219acd1241ffa4d38e19587f1ccc2854f951e451f3858efc9d2e1fe19d375c) #set(DOWNLOAD_SITE http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/64bit/2021/10/28/174906) set(SETUP_EXE setup-x86_64-2.924.exe) set(SETUP_URL http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/setup/snapshots/${SETUP_EXE}) set(SETUP_HASH_SHA256 edd0a64dc65087ffe453ca94b267169b39458a983b29ac31320fcaa983d0f97e) set(SETUP ${CYGWIN_ROOT}/${SETUP_EXE}) set(DOWNLOAD_SITE http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/64bit/2022/12/01/145510) set(PACKAGE ${CMAKE_CURRENT_LIST_DIR}/download/cygwin32_package)所谓Cygwin Time Machine对应install_cygwin.md中给出的入口说明是一个保存 Cygwin 历史快照的镜像站用于获取旧版本安装器与当时的软件包快照被注释掉的setup-x86_64-2.909.exe2021/10/28 快照是历史方案当前生效的是setup-x86_64-2.924.exe对应2022/12/01的快照32 位软件包的缓存目录独立为buildtools/download/cygwin32_package/与 64 位缓存区分开。安装 32 位交叉编译器时脚本对旧安装器使用了-X参数兼容旧版 Cygwin 镜像的开关execute_process( COMMAND ${SETUP} -X --quiet-mode --wait --no-admin --root ${CYGWIN_ROOT} --site ${DOWNLOAD_SITE} --local-package-dir ${PACKAGE} --packages cygwin32-gcc-g WORKING_DIRECTORY ${CYGWIN_ROOT} )装完cygwin32-gcc-g后buildtools/cygwin64/内同时存在两套 gcc原生 64 位x86_64-pc-cygwin-gcc与交叉编译i686-pc-cygwin-gcc。这也与 cygwin/README.md 中“发布用二进制所使用编译器”的说明完全对应——cygterm的 64 位版用x86_64-pc-cygwin-gcc构建32 位版用i686-pc-cygwin-gcc构建。3.3 清理下载缓存当以-DREMOVE_TMPON或REMOVE_TMP环境变量运行脚本时安装结束后会删除缓存目录中下载的安装包归档文件模式为http*即缓存的.tar.xz等归档包setup 下载到本地包目录时按站点前缀目录存放if(REMOVE_TMP) file(GLOB ARC_FILES ${PACKAGE}/http*) file(REMOVE_RECURSE ${ARC_FILES}) endif()四、安装产物与用途cygterm / cygtool 的构建验证安装完成后buildtools/cygwin64/下就具备了一套完整的 Cygwin 64 位环境。在仓库的 cygwin/cygterm/ 模块中对应的 CMake 工具链文件分别指向这两套编译器toolchain_x86_64-cygwin.cmake设置CMAKE_SYSROOT/usr/x86_64-pc-cygwin/sys-root、CMAKE_C_COMPILERx86_64-pc-cygwin-gcc、CMAKE_CXX_COMPILERx86_64-pc-cygwin-g、CMAKE_RC_COMPILERx86_64-pc-cygwin-windrestoolchain_i686-cygwin.cmake对应i686-pc-cygwin前缀的 32 位交叉工具链sysroot 为/usr/i686-pc-cygwin/sys-root两个文件都在sysroot目录不存在时自动清空CMAKE_RC_COMPILER与CMAKE_SYSROOT保证在仅有编译器、没有 sysroot 的环境下也能降级工作。因此通过install_cygwin.cmake装好的环境恰好满足 cygwin/README.md 中列出的发布二进制构建矩阵cygterm-i686/cygterm.exe← Cygwin 64bit /i686-pc-cygwin-gcc32 位交叉编译产物cygterm-x86_64/cygterm.exe← Cygwin 64bit /x86_64-pc-cygwin-gcc原生 64 位产物cyglaunch.exe、cygtool.dll则走 Visual Studiocl编译不依赖此 Cygwin 环境。五、验证与注意事项确认安装器哈希脚本通过EXPECTED_HASH校验 setup 安装器若校验失败会中止可从buildtools/download/下检查缓存或清除本地cygwin64/内的 setup.exe 后重试。确认编译器存在可在 Cygwin 的 bash 中执行x86_64-pc-cygwin-gcc --version与i686-pc-cygwin-gcc --version确认两套工具链可用随后可用仓库自带工具链文件直接配置构建cmake -DCMAKE_TOOLCHAIN_FILE../cygwin/cygterm/toolchain_x86_64-cygwin.cmake ..。不要在 Cygwin 环境下运行本脚本install_cygwin.cmake会检测路径中的cygdrive并直接报错应使用 Windows 原生 CMake。清理临时文件CI 或磁盘紧张场景可加-DREMOVE_TMPON脚本会在安装结束后删除下载的归档缓存。静默与无人值守配合NOPAUSE1运行install_cygwin.bat可在 CI 中无交互完成整套安装。六、小结install_cygwin.md以三行要点概括了 Tera Term 构建专用 Cygwin 环境的完整方案而配套的 install_cygwin.bat 与 install_cygwin.cmake 将其落实为可重复执行的脚本先就地安装 64 位 Cygwin 与基础编译工具再从 Cygwin Time Machine 拉取旧版安装器与快照源安装cygwin32-gcc-g交叉编译器。最终得到的cygwin64/环境既能为cygterm产出 64 位二进制也能交叉编译 32 位二进制是 cygwin/README.md 中发布二进制矩阵得以成立的前提。/output_article赞分享桌面应用通信网络【免费下载链接】teraterm项目地址https://gitcode.com/gh_mirrors/te/teraterm点击查看免费下载相关推荐PX4-Autopilot Windows Cygwin 开发环境搭建指南MSI 工具链安装、jMAVSim 仿真与故障排查PX4 Autopilot Windows Cygwin 开发环境搭建指南MSI 工具链安装、jMAVSim 仿真与故障排查 本篇技术指南讲解如何在 Wind嵌入式物联网机器人自动驾驶智能硬件Sandboxie Classic NSIS 安装器构建指南从环境搭建到 32/64 位安装包产出Sandboxie Classic NSIS 安装器构建指南从环境搭建到 32/64 位安装包产出 Sandboxie Classic经典版的安装程序并非应用安全虚拟化桌面应用【亲测免费】 Tera Term 安装与配置指南Tera Term 安装与配置指南 一、项目基础介绍 Tera Term 是一个免费的开源软件终端模拟器它支持多种通信协议常用于与串行端口或其他类型的通信设桌面应用通信网络上一篇Godot 多平台导出实战预设一次配置六大平台发布不踩坑下一篇wechatpy小程序云开发API实战数据库操作到文件上传完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表