Cygwin高级篇—工具配置及用法总结
关于 Cygwin,之前博文 《Win7下类linux终端环境—Cygwin》 已经介绍。这里介绍下 Cygwin 的一些高级用法。
1. cygwin添加到右键菜单
双击运行 setup-x86_64.exe,勾选 chere 安装包,并进行安装。
安装完成后,使用管理员身份打开 cygwin终端,并执行脚本:
chere -i -t mintty -s bash
此时右键菜单应该有 “Bash Prompt Here” 菜单选项。
为方便右键选择,可添加cygwin图标以及修改描述。使用 regedit 依次打开注册表并编辑。
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\cygwin64_bash
最终注册表内容,如下:
HKEY_CLASSES_ROOT\directory\background\shell\cygwin64_bash --修改默认数值内容: 此处打开 cygwin --新增字符串值,名字:ICON,数值数据:D:\ProgramData\cygwin64\Cygwin-Terminal.ico HKEY_CLASSES_ROOT\directory\background\shell\cygwin64_bash\commands --默认不修改:D:\ProgramData\cygwin64\bin\mintty.exe -e /bin/xhere /bin/bash.exe "%V"
最终右键菜单样式,如下:
2. cygwin工具配置
2.1 splint 工具
在 cygwin下安装程序,以 splint 为例,此工具用于代码静态检查。
splint工具帮助信息输出:
2.2 GCC 编译器
官网下载 MinGW ,并拷贝到C盘根目录。
编辑cygwin用户目录下的,.bashrc 文件,使在cygwin终端中可以通过命令直接调用。
打开 .bashrc 文件: D:\ProgramData\cygwin64\home\Administrator # 添加gcc编译工具 export PATH=$PATH:/cygdrive/c/MinGW/bin
重新打开终端,查看GCC版本:
由于 GCC 编译器 已包含 mingw32-make 工具,因此可直接查看 make 版本,如下:
备注:
为了方便 make 直接调用,可以在目录 C:\MinGW\bin 下,直接将 mingw32-make.exe 复制一份,并重命名为 make.exe ,之后在终端中直接运行 make 来替代 mingw32-make 。
2.3 qemu 模拟器
访问qemu官网直接选择最新版本,下载双击安装即可。笔者安装路径,如下:
D:\ProgramData\qemu
编辑 .bashrc 文件,增加如下内容:
# 添加qemu export PATH=$PATH:/cygdrive/d/ProgramData/qemu
重新打开终端,qemu 工具链信息,如下:
2.4 gnu-arm 编译器
访问arm官网,下载gnu-arm编译器。截止目前,最新版本为 gcc-arm-none-eabi-10.3-2021.07-win32.zip
以笔者安装目录为例,解压后如下:
添加 gnu-arm编译链 、qemu 模拟器,如下:
# 添gcc-arm工具链环境变量 export PATH=$PATH:/cygdrive/d/ProgramData/arm_tools/gcc-arm-none-eabi-10.3-2021.07/bin
重新打开终端,查看 arm-none-eabi 工具链,如下:
2.5 安装 git
双击运行 setup-x86_64.exe,勾选 git 安装包,并进行安装。
安装完成后,打开终端,查看 git 输出信息:
以 liteos 为例,直接 clone 下载,如下:
git clone https://gitee.com/LiteOS/LiteOS.git
3. 源码编译
以源码 stm32f030F4P6_gnu.zip 为例,直接cygwin终端中运行命令 mingw32-make ,如下:
最终打印信息,如下:
arm-none-eabi-size build/cube_demo.elf text data bss dec hex filename 2864 20 1572 4456 1168 build/cube_demo.elf arm-none-eabi-objcopy -O ihex build/cube_demo.elf build/cube_demo.hex arm-none-eabi-objcopy -O binary -S build/cube_demo.elf build/cube_demo.bin