研发常用软件工具说明
摘要
针对软件研发人员的常用软件工具,进行阐释说明。
文章目录
零、
一、Linux/Unix操作系统平台相关
Linux/Unix相关软件工具,并不意味着这些软件工具只能运行在Linux/Unix操作系统平台上,包括那些为了跨操作系统平台的便利性而开发的软件工具,如CygWin(及其升级版MSYS/MSYS2)、MinGW、WSL等。
1.1 Windows操作系统中搭建Linux/Unix平台环境
Cygwin
官网:https://www.cygwin.com/
Get that Linux feeling - on Windows。
Cygwin is:
- a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows.
- a DLL (cygwin1.dll) which provides substantial POSIX API functionality.
Cygwin is not:
- a way to run native Linux apps on Windows. You must rebuild your application from source if you want it to run on Windows.
- a way to magically make native Windows apps aware of UNIX® functionality like signals, ptys, etc. Again, you need to build your apps from source if you want to take advantage of Cygwin functionality.
MSYS/MSYS2——Minimal SYStem
Software Distribution and Building Platform for Windows.
Minimal GNU(POSIX)system on Windows。
官网:https://www.msys2.org/
MSYS2 is a collection of tools and libraries providing you with an easy-to-use environment for building, installing and running native Windows software.
MSYS2 isn’t “one tool to rule them all”, but tries to focus on what it’s good at. It provides a native build environment, based on open source software, and makes you feel right at home when you are already comfortable with Linux. There are good reasons to use multiple different environments and tools for different tasks on Windows.
MSYS2 vs Other Projects
In case you’d like to see more comparisons or feel that they could be improved please let us know.
MSYS2 vs WSL
MSYS2 allows you to build native Windows programs, while with WSL you can only cross compile them which makes things more complicated. If you are just looking for Linux CLI tools, or want to build software that ends up on a Linux server anyway then WSL is the better choice.
MSYS2 vs Chocolatey
Chocolatey mainly bundles already built (open and closed source) software and makes it easy to install/update them. In MSYS2 on the other hand all packages are built from source and you can easily reproduce the builds on your machine. Chocolatey packages have the advantage that the bundled installers usually have better Windows integration, in that they set up file associations, shortcuts, etc. and because they are not built from source there are also lots of packages for closed source software like Visual Studio etc. that would be hard to manage/update otherwise.
MSYS2 vs Cygwin
The unixy tools in MSYS2 are directly based on Cygwin, so there is some overlap there. While Cygwin focuses on building Unix software on Windows as is, MSYS2 focuses on building native software built against the Windows APIs.
MSYS2 vs Arch Linux
MSYS2 and Arch Linux share the package manager and all that comes with it, like build definitions, rules for how to package things, how updates work, how packages are signed, how packages are shipped, the rolling release nature and so on. By re-using this functionality and concepts we can focus on the actual packages and profit from the experience and work of Arch Linux developers. Users already familiar with Arch Linux will also have an easier time getting started.
MSYS2 vs Scoop
Due to lack of experience with scoop see their comparison page:
- https://github.com/lukesampson/scoop/wiki/Chocolatey-Comparison
- https://github.com/lukesampson/scoop/wiki/Cygwin-and-MSYS-Comparison
WSL——Windows Subsystem for Linux
适用于 Linux 的 Windows 子系统(WSL)是 Windows 的一项功能,可用于在 Windows 计算机上运行 Linux 环境,而无需单独的虚拟机或双重启动。 WSL 旨在为想要同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。
- 使用 WSL 安装和运行各种 Linux 分发版,例如 Ubuntu、Debian、Kali 等。 安装 Linux 分发版 并从 Microsoft 应用商店接收自动更新, 导入 Microsoft 应用商店中不可用的 Linux 分发版,或 生成自己的自定义 Linux 分发版。
- 将文件存储在独立的 Linux 文件系统中,特定于已安装的分发版。
- 运行命令行工具,例如 BASH。
- 运行常见的 BASH 命令行工具,例如
grep
,sed``awk
或其他 ELF-64 二进制文件。 - 运行 Bash 脚本和 GNU/Linux 命令行应用程序,包括:
- 工具:vim、emacs、tmux
- 语言: NodeJS、JavaScript、 Python、Ruby、C/C++、C# & F#、Rust、Go 等。
- 服务:SSHD、 MySQL、Apache、lighttpd、 MongoDB、 PostgreSQL。
- 使用自己的 GNU/Linux 分发包管理器安装其他软件。
- 使用类似 Unix 的命令行 shell 调用 Windows 应用程序。
- 在 Windows 上调用 GNU/Linux 应用程序。
- 运行直接集成到 Windows 桌面的 GNU/Linux 图形应用程序
- 使用设备 GPU 加速 Linux 上运行的机器学习工作负载。
WSL 是一个开放源代码工具,提供可供下载和贡献的源代码:
- 详细了解 WSL 开源组件
- WSL 开源文档网站: wsl.dev
- GitHub 上的 WSL 存储库: github.com/Microsoft/wsl
虚拟机Virtual Machine软件工具——如VirtualBox、VMware
VirtualBox和VMware都是本地个人计算机PC端部署虚拟机的软件工具,前者是开源免费软件,后者是商用付费软件。
1.2 Linux/Unix平台下编译器
1.2.1 LLVM——Low-Level Virtual Machine项目
官网:https://www.llvm.org/
LLVM是一个伞形/综合性项目an umbrella project,该项目是模块化可重用的编译器及其工具链技术的集合。LLVM与传统虚拟机关系不大,尽管它曾经是一个首字母缩略词,但现在它不再是一个首字母缩写,而只是该一揽子项目的品牌名。
The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines. The name “LLVM” itself is not an acronym; it is the full name of the project. The name “LLVM” was once an acronym, but is now just a brand for the umbrella project.
在经典的编译器设计中,传统静态编译器(像大多数C编译器一样)最流行的设计是采用三段式设计,由前端、优化器、后端三个主要组件构成The most popular design for a traditional static compiler (like most C compilers) is the three phase design whose major components are the front end, the optimizer and the back end,如下图:
这种经典三段式设计的隐含意思是,当我们决定某个编译器支持多种源语言或目标架构时,这种经典设计的最重要赢面/胜利就来了,若编译器在其优化器中使用通用代码表示,那么可以为任意语言编写(能够编译源语言它本身的)一个前端,并且可以为任何目标编写(能够由源语言编译出目标的)一个后端The most important win of this classical design comes when a compiler decides to support multiple source languages or target architectures. If the compiler uses a common code representation in its optimizer, then a front end can be written for any language that can compile to it, and a back end can be written for any target that can compile from it,如下图:
Clang
官网:https://clang.llvm.org/
Clang是一个针对LLVM项目的C语言家族(C/C++、MSVC即Microsoft Visual C++、Objective-C/C++、OpenCL、CUDA等)的开源编译器前端Clang is a C language family frontend for LLVM,它是LLMVM编译器基础设施项目的一部分,它能提供大量超过GCC编译器的功能特性。
Clang project provides a language front-end and tooling infrastructure for languages in the C language family (C, C++, Objective C/C++, OpenCL, and CUDA) for the LLVM project. Both a GCC-compatible compiler driver (clang) and an MSVC-compatible compiler driver (clang-cl.exe) are provided. Clang is a C/C++/Objective-C compiler which provides a number of benefits over the GCC compiler.
二、Windows操作系统平台相关
2.1 Windows平台下编译器
Visual Studio
ToBeComplemented
三、
ToBeComplemented