HEnvBox/ReadMe.md

183 lines
9.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 说明
本工程主要用于快速配置本人常用的开发环境。
主要支持以下操作系统:
- [Windows](https://www.microsoft.com) 10及更新版本,架构为x86_64。
- [Ubuntu](https://ubuntu.com/) 22.04架构为x86_64。
- [Debian](https://www.debian.org/) 12,架构为x86_64。
- [Deepin](https://www.deepin.org) V23,架构为x86_64。
对于Windows而言本人常用[MSYS2](https://www.msys2.org/)作为开发环境。
对于Linux而言,本人常使用ubuntu,其余基于Linux内核的操作系统可能只有编译环境而不包含其它工具(如[KiCad](https://www.kicad.org)、[GIMP](https://www.gimp.org)、[Dia](http://dia-installer.de/)等)。
## 目标环境功能
注意:下述功能仅为目标,并非在所有支持的操作系统有效。
- 支持基于[wxWidgets](https://www.wxwidgets.org/)的GUI程序编译。
- 支持基于[Qt](https://www.qt.io/)的GUI程序编译。
- 支持基于[opencv](https://opencv.org/)的程序编译。
- 支持基于[boost](https://www.boost.org/)的程序编译。
- 支持常用的构建系统/构建工具,如[make](https://www.gnu.org/software/make/)、autotools([automake](https://www.gnu.org/software/automake/)、[autoconf](https://www.gnu.org/software/autoconf/))、[ninja](https://ninja-build.org/)、[cmake](https://cmake.org/)、[scons](https://scons.org/)、[xmake](https://xmake.io/#/)、[meson](http://mesonbuild.com/)等
- 支持常用的Kconfig配置工具,如kconfig-frontends、python-kconfiglib。
- 支持[Qemu](https://www.qemu.org/)测试。
- 支持arm裸机程序开发(采用arm-none-eabi-gcc工具链)。
- 支持riscv裸机程序开发(采用riscv64-unknown-elf-gcc工具链)。
- 支持使用[crosstool-ng](http://crosstool-ng.org)创建自定义工具链。
- 支持基于[openwrt](https://openwrt.org/)/[buildroot](https://buildroot.org/)的固件程序编译。
- 无论是Windows还是Linux,均采用[bash](https://www.gnu.org/software/bash/)作为默认脚本解释器,并且支持一些小工具如neofetch。
- 支持使用常用的编程语言编译程序,如C、C++、Go、Lua、Rust等。
## 下载说明
本工程可通过git工具下载,但需要注意的是下载前请确认未启用git的autocrlf选项否则可能导致安装异常。
## 存储空间
由于是创建开发环境,则会尽可能多地安装软件,故占用空间较大。
Windows推荐200G以上空间本工程目录Linux推荐100G以上空间本工程目录+系统软件包安装目录)。
一般情况下本工程将下载的软件放入本地程序根路径所在目录但在某些系统中如Linux将使用系统软件包管理工具安装软件此时下载的软件将占用系统空间。
# 工具
## 镜像工具
镜像工具一般用于备份各种源代码包括但不限于github.com、gitee.com以供不时之需如备份源代码仓库。
具体说明见[ReadMe.Tools.Mirror.md](ReadMe.Tools.Mirror.md )
## 路径工具
路径工具一般用于创建某些目录/软连接现主要用于将openwrt/buildroot的下载目录指向同一个目录。
具体说明见[ReadMe.Tools.Path_Patch.md](ReadMe.Tools.Path_Patch.md)
## crosstool-ng
crosstool-ng是一款交叉编译工具链创建工具.
具体说明见[ReadMe.Tools.crosstool-ng.md](ReadMe.Tools.crosstool-ng.md)
## cutecom-ng
cutecom-ng是一个基于Qt的串口工具,可用于串口调试。
具体说明见[ReadMe.Tools.cutecom-ng.md](ReadMe.Tools.cutecom-ng.md)
## EnvCheck
环境检查相关脚本,具体见[tools/EnvCheck](tools/EnvCheck).
# 开发环境
对于一般开发而言安装好HEnvBox即可正常使用开发环境。
但对某些软件而言,可能需要特殊的设置。
## openwrt
辅助开发openwrt的工具。
具体说明见[ReadMe.DevEnv.openwrt.md](ReadMe.DevEnv.openwrt.md)
# 环境变量
本工程主要使用环境变量进行脚本操作:
| 名称 | 说明 | 备注 |
| :----------------------------- | :--------------------------------------- | :----------------------------------------------------------- |
| HENVBOX_ROOT_PATH | 根路径 | 此路径的格式由操作系统决定 |
| HENVBOX_TYPE | 类型 | 对于windows而言其值固定为win32对于其它系统而言其值为uname -s返回的值。 |
| HENVBOX_LOCAL_ROOT_PATH | 本地程序根路经 | 此路径的格式由操作系统决定 |
| HENVBOX_LOCAL_BINDIR_PATH | 本地程序根二进制可执行文件路经 | 此路径的格式由操作系统决定 |
| HENVBOX_LOCAL_ROOT_PATH_UNIX | 本地程序根路经Unix格式 | 此路径专用于MSYS2 |
| HENVBOX_LOCAL_BINDIR_PATH_UNIX | 本地程序根二进制可执行文件路经Unix格式 | 此路径专用于MSYS2 |
| HENVBOX_TOOLS_PATH | tools路径 | 此路径的格式由操作系统决定 |
| HENVBOX_TOOLS_TYPE | tools类型 | 对于windows而言其值可选msys32或msys64。对于其它系统而言其值为软件包管理工具名称或者默认值common。 |
注1:本地程序表示需要从网络上下载到本地安装的程序tools目录为自带工具或者工具安装资源。
注2:所有环境变量在cmd中可使用`set`查看在Linux或者MSYS2中可使用`env`查看。
## 第三方环境变量
### RT-Thread
当环境中有arm-none-eabi-gcc时可设置相关环境变量(由BSP支持)支持scons直接编译。
| 名称 | 说明 | 备注 |
| :------------ | :------------------------ | :----------------------- |
| RTT_CC | RT-Thread C编译器工具名称 | 由BSP中rtconfig.py使用。 |
| RTT_EXEC_PATH | RT-Thread 可执行程序路径 | 由BSP中rtconfig.py使用。 |
以上环境变量通常在以下环境有效:
- Linux
- MSYS2
# 脚本说明
## Windows
- config.bat在cmd窗口中使用`call config.bat路径 `可配置环境。
- install.bat安装或者更新软件包,可多次调用,为防止异常不要同时执行多个实例。
- upgrade.bat更新软件包,可多次调用。
- uninstall.bat:卸载安装,主要用于删除右键信息
- Kconfiglib.bat:配置Kconfig在首次正确安装后可使用,用于配置可选项,采用python-kconfiglib配置。
## Linux
- config.sh在bash中使用`. config.bat路径 `可配置环境。
- install.sh安装或者更新软件包,可多次调用,为防止异常不要同时执行多个实例。
- upgrade.sh更新软件包,可多次调用。
- uninstall.sh:卸载安装,主要用于删除.bashrc信息。注意:为保证系统稳定性,不会删除已安装的软件包。
- menuconfig.sh:配置Kconfig在首次正确安装后可使用,用于配置可选项,采用kconfig-frontends配置。
# 安装
## Windows
保证目录可写可参考MSYS2对目录的要求确保安装路径中没有空格与中文。
以管理员权限执行install.bat,等待安装完成(注意:由于第一次更新pacman可能主动关闭窗口,若第一次安装时间小于10分钟且右键菜单打不开,需要重新运行安装脚本)。
完成后可在目录的右键菜单中找到HEnvBox选项。在需要使用各种MSYS2中的工具时可使用右键菜单打开HEnvBox。
## Linux
使用具有管理员权限的账户(可使用sudo提权)执行install.sh,等待安装完成,期间可能要求输入用户密码。
# 使用
## Windows
- 默认情况下使用Msys2的UCRT64环境。如需编译32位应用可使用Msys2的MINGW32环境(由于较多应用停止支持32位因此此环境可能功能不全)。
- 如需保持工具的更新请定期执行更新脚本若太长时间如几个月不更新可能因为GPG签名过期而无法更新。
- 若出现Msys2相关子菜单无法打开有可能是未安装完成再次执行安装脚本即可。
- 对于Windows11而言右键菜单与之前版本不一致需要按住Shift键再使用右键打开菜单。
## Linux
对于Linux而言当安装完成后,本工程会通过用户`.bashrc`文件自动加载,因此用户直接打开终端即可使用相关工具。
# 托盘程序
见[tools/Tray](tools/Tray)。
托盘程序可作为一个运行脚本的快捷入口。
# 推荐资源
## 软件
- [Msys2](https://www.msys2.org/)
- [Cygwin](https://cygwin.com/)
- [0install](https://0install.net/):去中心化的软件安装系统
- [sysinternals](https://learn.microsoft.com/zh-cn/sysinternals/downloads/sysinternals-suite):Windows下实用工具。
- [ConEmu](https://conemu.github.io/)