msys2+mingw64+ragel安装

article/2025/4/20 3:08:01

[msys2+mingw64+ragel安装]

[简介]

这几天部门老大让解析几个东西,要求用ragel编写,在Windows环境下,要运用到mingw64,安装时发现mingw里没有pacman,需要现安装,然后发现Wget也没有。。。,所以改使用msys2。安装过程比较曲折,发生各种问题。也查了一堆资料文档,好在最后都解决了。特在此整理一下,以便记忆。

首先介绍一下这几个东西:msys2是msys升级版,自带pacman,方便许多,通过msys2可以安装mingw32和mingw64。mingw是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。Ragel是个有限状态机编译器,它将基于正则表达式的状态机编译成传统语言(C,C++,D,Java,Ruby等)的解析器。简单说就是Ragel有自己的语法,可以内嵌到C/C++等语言中。它可以解析正则表达式,并且不用调用正则相应的模块,因此效率大大提升,生成的文件扩展名为.rl,可以转成C语言程序。

[安装]

安装的顺序是msys2->mingw64->ragel。
先安装msys2:

[1.MSYS2主页]

http://msys2.github.io/
http://sourceforge.net/projects/msys2/

[2.MSYS2详细安装指南]

http://sourceforge.net/p/msys2/wiki/MSYS2%20installation/

[3.安装MSYS2]

首先从MSYS2主页或SourceForge下载MSYS2的安装包:32位系统下载msys2-i686-20160205.exe,64位系统下载msys2-x86_64-20160205.exe。请记住i686对应32位系统,x86_64对应64位系统,以后装软件都是这种对应关系。下面以64位的msys2-i686-20160205.exe示范安装过程:

1

点击“下一步”

2

注意上面选择安装位置,路径里不要有任何中文、特殊字符、空格等等,一般装在磁盘根的msys32或msys64目录。注意磁盘剩余空间要有10GB以上剩余空间,哪个分区剩余空间比较大就装哪。设置好安装路径,点击“下一步”

3

点击“下一步”

4

等待安装结束

5

取消立即运行选项的√,并点击“完成”。
添加环境变量 D:\msys64\home\%name%,这个变量非常有用,后面配置要多次用到。

[4.修改软件源]

MSYS2环境的软件和升级都是在线方式的,需要联网下载。所以需要一个可靠的软件源,软件源配置文件在msys64\etc\pacman.d\文件夹里三个:
mirrorlist.mingw32
mirrorlist.mingw64
mirrorlist.msys

6

用文本编辑器打开这三个文件,并添加如下软件源(我就遇到因为没有修改软件源,导致mingw下载不下来,导致安装了好半天)。默认的源在有些地方速度还可以,教育网内速度一般,可以添加其他镜像提高速度,下面列举了已知的速度还可以源,请大家自己按照现有网速排序,现在有些开源镜像添加了msys2的源,感谢各个开源镜像站点!

编辑安装目录下 \etc\pacman.d\ 文件夹下 mirrorlist.msys 等三个文件,如下所示

mirrorlist.msys

##
## MSYS2 repository mirrorlist
## Changed on 2014-11-15
##
##中国科学技术大学开源软件镜像
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MSYS2/$arch
##北京理工大学镜像
Server = http://mirror.bit.edu.cn/msys2/REPOS/MSYS2/$arch
##日本北陆先端科学技术大学院大学 sourceforge 镜像
Server = http://jaist.dl.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
##The UK Mirror Service Sourceforge mirror
Server = http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/m/ms/msys2/REPOS/MSYS2/$arch
## Primary
Server = ftp://148.251.42.38/MSYS2/$arch
## Sourceforge.net
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch

mirrorlist.mingw64

##
## 64-bit Mingw-w64 repository mirrorlist
## Changed on 2014-11-15
##
##中国科学技术大学开源软件镜像
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MINGW/x86_64
##北京理工大学镜像
Server = http://mirror.bit.edu.cn/msys2/REPOS/MINGW/x86_64
##日本北陆先端科学技术大学院大学 sourceforge 镜像
Server = http://jaist.dl.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
##The UK Mirror Service Sourceforge mirror
Server = http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/m/ms/msys2/REPOS/MINGW/x86_64
## Primary
Server = ftp://148.251.42.38/MINGW/x86_64
## Sourceforge.net
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64

mirrorlist.mingw32

##
## 32-bit Mingw-w64 repository mirrorlist
## Changed on 2014-11-15
##
##中国科学技术大学开源软件镜像
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MINGW/i686
##北京理工大学镜像
Server = http://mirror.bit.edu.cn/msys2/REPOS/MINGW/i686
##日本北陆先端科学技术大学院大学 sourceforge 镜像
Server = http://jaist.dl.sourceforge.net/project/msys2/REPOS/MINGW/i686
##The UK Mirror Service Sourceforge mirror
Server = http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/m/ms/msys2/REPOS/MINGW/i686
## Primary
Server = ftp://148.251.42.38/MINGW/i686
## Sourceforge.net
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686

[5.msys2系统更新]

接下来打开开始菜单里的MSYS2 Shell开始进行MSYS2系统更新:

7

1.更新本地包数据

pacman -Sy

2.升级核心包

pacman -S --needed filesystem msys2-runtime bash libreadline libiconv libarchive libgpgme libcurl pacman ncurses libintl

3.关闭所有 MSYS2 shell,然后运行 msys64\autorebase.bat,运行后发现msys64\msys2_shell.bat文件,msys64\mingw32_shell.bat文件和msys64\mingw64_shell.bat文件均不见了,别急,打开msys64\msys2_shell.cmd文件。

8

4.升级其他包,在上面的命令框里输入

pacman -Su

可能会出现如下图所示的问题,Ctrl+C,重新输入命令:pacman -Su,直到能够正常更新所有软件。

9

5.安装成功后,msys64目录下会出现mingw32.exe,mingw64.exe和msys2.exe,如下图:

10

6.(选做)设置快捷方式,这里以64位为例。打开开始菜单,找到MinGW-w64 Win64 Shell快捷方式所在目录,选择MinGW-w64 Win64 Shell,右键属性,把目标改成D:\msys64\msys2_shell.cmd -mingw64,如下图:

11

(这个修改是我同事告诉的,说是会解决以后可能遇到的某些问题。32位的修改同64位)

[6.MinGW64位安装+gcc安装]

1.安装gcc

pacman -S gcc

2.(选做)安装其它环境
另外可根据需要安装你想要的软件环境。

pacman -S base-devel git mercurial cvs wget p7zip perl ruby python2

说明pacman -S是安装软件包的意思,base-devel是基本开发工具和库,git mercurial cvs 三个是版本控制软件,可用于下载和发布项目源代码,wget是下载工具,p7zip是解压缩工具,perl ruby python2三个是脚本编程环境。

3.安装MinGW64位
对于32位系统,执行:

pacman -S  mingw-w64-i686-toolchain 

对于64位系统,执行:

pacman -S  mingw-w64-x86_64-toolchain

注:32位系统只能编译运行32位程序,64位系统既可以编译运行64位程序,也可以编译运行32位程序。如果希望在64位系统同时编译32位和64位系统,可以把上面两个工具链都安装。一般情况下只需要一个。如果出现下载错误,就重复执行刚才的命令,直到成功为止。

4.添加环境变量:D:\msys64\mingw64\bin;

5.安装完成后输入

gcc -v

结果如下图:

12

[7.Ragel安装]

输入命令查看现有Ragel版本

pacman -Ss ragel

13

安装64位输入命令:

pacman -S mingw64/mingw-w64-x86_64-ragel

安装32位输入命令:

pacman -S mingw32/mingw-w64-i686-ragel

[8.Ragel拓展]

Ragel官网简介
http://www.colm.net/open-source/ragel/
Ragel官方文档
http://www.colm.net/files/ragel/ragel-guide-6.9.pdf
Ragle学习笔记
http://wenku.baidu.com/link?url=nBqtGdI5OTDiwyVmAnT2VufoxYzkxiTiqp0OZzgFvgT18FiZLT3D2YcFTlw7nGuJ37nZbSgRJUkq9RXINXQRL5gAQxplTTqj81ur4k3T1fG

[9.本文参考网址链接]

http://www.tuicool.com/articles/zmeQfu
http://blog.csdn.net/liyuanbhu/article/details/39397931
http://www.cnblogs.com/shengansong/archive/2011/11/19/2255129.html
http://www.rswiki.org/%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/msys2?rev=1416044574
http://wenku.baidu.com/link?url=nND7_rK__kXN80cGTCA8t4JYmMFytcM3lQj20nWxgV33rEfXT0r6g97vYHbzLp9VQ4M404mYaePwIXeOsD4YNLm2yOFcZJCYcBlFYnjaovG


http://chatgpt.dhexx.cn/article/3aFqorkN.shtml

相关文章

Ragel State Machine Compiler 的速度测试

据说Ragel生成的自动机程序,速度飞快,特地测试了一下,所得结果如下。 测试环境: VC6 Release下编译 测试规模: 一亿次 测试用例: Ragel编译r_atoi.rl文件 vs crt lib的 atoi函数 测试结果&…

Hello Ragel -- 生成状态机的神器

Ragel 是个很 NB 的能生成状态机的编译器,而且支持一堆语言:C、C、Object-C、C#、D、Java、Go 以及 Ruby。 原来的文本解析器是用正则表达式实现的,随着状态(if-else)越来越多,修改越来越麻烦。。。 安装 M…

嵌入式系统开发流程

一、嵌入式系统开发流程 1、系统需求分析:根据需求,确定设计任务和设计目标,指定设计说明书。 2、体系结构设计:描述系统如何实现所述的功能需求,包括对硬件、软件和执行装置的功能划分以及系统的软件、硬件选型。 …

嵌入式系统开发设计

嵌入式系统开发设计 嵌入式系统设计的主要任务是定义系统的功能、决定系统的架构,并将功能映射到系统实现架构上。系统架构既包括软件系统架构也包括硬件系统架构。 嵌入式系统设计具有以下特点: 软、硬件协同并行开发; 微处理器的类型多种…

嵌入式系统的概念,嵌入式系统的组成及特点,嵌入式系统的基本开发流程

1. 嵌入式系统的概念 嵌入式系统( Embedded system) , 是一种 "完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 2 . 嵌入式系统的组…

配置嵌入式系统开发环境(教程)

配置嵌入式系统开发环境 前言一. 安装VMware Workstation?二、在虚拟机中安装Windows XP镜像1.创建虚拟机启动虚拟机进入PE系统 关于pdf中预实验的补充说明 前言 嵌入式实时操作系统及应用开发(第三版)罗蕾主编光盘镜像 链接:htt…

嵌入式Linux系统开发笔记(七)

嵌入式Linux系统开发笔记(七) 七、U-Boot基础 1.概述 在移植 Linux之前我们需要先移植一个 bootloader 代码,这个 bootloader 代码用于启动 Linux 内核, bootloader有很多,常用的就是 U-Boot。 移植好 U-Boot 以后再…

迅为-iMX6ULL开发板原创嵌入式开发文档系统化学习

iTOP-IMX6ULL核心板采用单核Cortex-A7架构,主频高达528 MHz,CPU集成电源管理,146 PIN引脚全部引出。核心板接口引出串口8路、CAN 2路、网口2路、I2C1路、SPI 2路、PWM8路、ADC5路、USB1路等功能。核心板在IMX6UL开发板上进行了深度优化&#…

Vxworks嵌入式开发系统入门基础概念学习

1.VxWorks应用 自动化设备、工业控制(实时性好)、军用设备以及消费电子。 2.实时性 实时性包括硬实时、软实时。硬实时系统有一个刚性的、不可改变的deadlines,它不允许任何超出deadlines的错误。而软实时是一个柔性灵活的,它可以…

嵌入式系统的开发流程

嵌入式系统的开发流程 摘要:本文以 HHARM9-EDU为例,简要说明一下嵌入式系统的开发流程。 整个流程很简单,流程图如下: 一、配置Linux及MINIGUI ①配置Linux: 由于 HHARM9-EDU推荐使用Redhat 9,所以这里只介…

嵌入式开发系统的简介

小白日志(一) 嵌入式开发系统的简介 嵌入式系统是一种以硬件为载体,以计算机技术为基础,以应用程序为核心,满足特定功能、要求以及应用环境的专用计算机系统。所谓“嵌入式”,顾名思义,嵌入到…

嵌入式系统开发环境概述

嵌入式系统开发环境主要包括: 集成开发工具交叉编译器批处理文件makefileLink Script调试工具下载工具其它工具(Offline Tools)模拟器版本控制工具 接下来分别讲解以上各个工具: 1、集成开发工具 一般CPU厂商会提供针对该CPU的集成开发环境(IDE)&…

嵌入式系统概述3-嵌入式系统的开发流程和学习基础、方法

嵌入式系统的开发流程 以带有操作系统的32位微处理器为核心的嵌入式系统为例: 第一步:建立开发环境 操作系统一般使用Redhat Linux,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如,arm-linu…

嵌入式系统开发概述

1、嵌入式系统是什么 2、嵌入式系统的组成 3、嵌入式开发与传统单片机开发不同 4、嵌入式应用和就业方向 5、学习路线 1、嵌入式系统是什么? 嵌入式系统(百度):嵌入式系统是以应用为中心,以计算机技术为基础&#…

mysql给用户授予某数据库权限_mysql 数据库授权(给某个用户授权某个数据库)

mysql 数据库授权(给某个用户授权某个数据库) 2016-10-10 带你飞 1.新建用户。 //登录MYSQL >mysql -u root -p >密码 //创建用户 mysql> insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"))…

MySQL数据库用户管理以及数据库用户授权

目录 一、数据库用户管理 1、新建用户 2、查看用户信息 3、重命名用户 4、删除用户 5、修改当前登录用户密码 6、修改其他用户密码 7、忘记 root 密码的解决办法 7.1 修改 /etc/my.cnf 配置文件,不使用密码直接登录到 mysql 7.2 使用 update 修改 root 密…

Mysql8数据库如何给用户授权

查看用户已有权限 SHOW GRANTS FOR [用户名];使用root用户授予所有权限 -- 授权 GRANT ALL PRIVILEGES ON [数据库名].[表明] TO [用户名][连接地址] WITH GRANT OPTION; -- 刷新权限 FLUSH PRIVILEGES;例如给numb用户的所有连接地址授权numb数据库所有表权限如下&#xff1a…

mysql授权用户多个数据库_MySQL创建用户授权数据库

MySQL等主流数据库的最高权限一般是root用户. 有时我们需要提供数据库的账号和密码以使用某些服务. 但实际上每个服务只会使用1个左右的数据库. 直接将root账号和密码随意分配是一件很危险的事情. 所以我们需要单独的创建用户, 并授权需要的数据库给它. 用户管理 创建用户 创建…

Mysql数据库给用户添加权限

1、Mysql下创建新的用户 新创建的用户默认是没有任何权限的。 语法格式: create user 用户名 identified by 密码; 2、给用户分配权限 语法结构: grant 权限 on 数据库.数据表 to 用户 主机名; 3、精确的控制用户的权限 略 参考博文: m…

mysql怎么给用户加权限_mysql怎么给用户加权限

mysql给用户加权限的方法:首先创建用户,代码为【create user 用户名 identified by 密码】;然后给用户分配权限,代码为【grant 权限 on 数据库.数据表 to 用户 主机名】。 mysql给用户加权限的方法: 一、Mysql下创建新…