MSYS2的学习
前言:Minimal GNU(POSIX)system on windows,是一个小型的GNU环境,包括基本的bash,make等等。MSYS2是一个MSYS的独立改写版本,主要用于shell命令开发环境。同时,它也是在Cygwin(POSIX兼容性层)和MinGW-w64基础上产生的,追求更好的互操作性的Windows软件。起源原本GNU工具只在Linux/Unix系统才有,随着Win...
前言:
Minimal GNU(POSIX)system on windows,是一个小型的GNU环境,包括基本的bash,make等等。
MSYS2是一个MSYS的独立改写版本,主要用于shell命令开发环境。同时,它也是在Cygwin(POSIX兼容性层)和MinGW-w64基础上产生的,追求更好的互操作性的Windows软件。
起源
原本GNU工具只在Linux/Unix系统才有,随着Windows系统的广泛应用,为了在Windows系统里使用GNU工具,诞生了MinGW(minnimalist GNU for Windows)项目,利用MinGW可以生成Windows里面的exe程序和dll链接库。MinGW只是编译工具集,没有类似Unix命令行环境,所以为了进一步在Windows系统上使用类Unix环境,MinGW项目组衍生了MSYS子项目,该项目从Cygwin派生,构造了一个类Unix命令行环境,并提供了POSIX功能支持
- POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。
POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。)
MinGW本身仅支持生成32位程序,而MinGW-w64项目则相当于MinGW的升级版,同时支持32位和64位程序,MSYS2也是MSYS的衍生版,使用了MinGW-w64编译工具集。另外MSYS2还有一个非常强大的功能,从arch Linux引入软件包管理器pacman工具,使其扩展非常方便。
pacman包管理软件
自带pacman管理,可以使用pkgtool和makepkg
使用mingw-w64工具链,可以编译32位或64位代码
PKGBUILD
PKGBUILD是一个shell脚本,包含Arch Linux在构建软件包时需要的信息。
Arch Linux用makepkg创建软件包。当makepkg运行时,它会在当前目录寻找PKGBUILD文件,并依照其中的指令去获取依赖文件,编译出pkgname.pkg.tar.xz文件。生成的包内含有二进制文件和安装指令,可以使用pacman进行安装。
下面是列举的PKGBUILD中的变量,详情参考:https://wiki.archlinux.org/index.php/PKGBUILD_(简体中文)
三个shell环境
- MYSYS2 shell:是MSYS2环境管理命令行,可以安装卸载MSYS2环境里的软件,管理文件系统,执行脚本等等
- Mingw-w64 win32 shell:windows的32位程序开发环境,在32位和64位Windows都能用
- Mingw-w64 win64 shell:windows的64位程序开发环境,仅在64位环境下使用。
只有在后两个mingw-w64的命令行里才能使用gcc,g++等编译工具,对源程序进行编译,链接操作,进而最终形成Windows下可执行程序.exe和动态链接库.dll。
MSYS2 Shell一般仅用于软件包安装管理和更新
更新MSYS2系统环境
MSYS2环境的软件和升级都是在线方式的,需要联网下载。所以需要一个可靠的软件源,软件源配置文件在/etc/pacman.d/文件夹下的三个文件:
mirrorlist.msys
mirrorlist.mingw64
mirrorlist.mingw32
三个文件包含了pacman包管理器获取软件的地址。
下图示例的是中科大镜像的mingw64的软件源网站(其中的包对应了上面说的pkg)
打开开始菜单的MSYS2.Shell进行MSYS2系统更新:
- 更新软件数据库
pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime
,一直y就行 - 关闭旧的MSYS2命令行,重新打开MSYS2 Shell更新软件
pacman -Su
,输入y即可
安装MinGW-w64编译套件
默认情况下MSYS2只安装了基本环境,开发工具集没装,需要手动安装,下面来安装。
- 打开开始菜单的MSYS2 Shell执行下面命令:
pacman -S base-devel git mercurial cvs wget p7zip perl ruby python3
说明pacman -S安装软件包,base-devel 是基本开发工具和库,git mercruial cvs三个是版本控制软件,用于下载和发布项目源代码,wget是下载工具,p7zip是解压缩工具,perl,ruby,python三个脚本编程环境。 - 安装MinGW-w64
对于32位系统,执行
pacman -S mingw-64-i686-toolchain
对于64位系统,执行
pacman -S mingw-w64-x86_64-toolchain
注:32位只能编译32位程序,64位既能编译32位也能编译64位。
安装成功后,关闭旧的命令行。在开始菜单里打开MinGW-w64 Win32 Shell,输入gcc -v就可以查看是否安装好了。
为MSYS2添加右键菜单栏
有时候我们需要在Windows某个文件夹下,启动MSYS2的命令终端,运行sh.exe。为了方便操作,我们将启动的操作添加到右键菜单下。步骤如下:
- 首先设置环境变量:set MSYS2_PATH_TYPE=inherit & set CHERE_INVOKING=1。其中第一个变量是让MSYS2继承Windows的环境变量路径,第二个是以 Windows 工作目录作为 msys2 工作目录。
- 打开注册表:regedit.exe 然后在HKEY_CLASSES_ROOT\Directory\Background\shell目录下添加一个项命名为open MSYS2 here,然后在这个文件上在新建一个项命名为command,然后将其值改为在cmd下运行启动MSYS2的命令,我的供参考:
D:\msys64\usr\bin\sh.exe --login -i
- 添加完成,可以试试了。
更多推荐
所有评论(0)