已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MinGW Minimalist GNU for Windows 是 GNU 开发环境在 Windows 下的一个移植 而 MSYS 则是与 MinGW 配套的一个 shell 环境以及相关的工具程序 本来是不需要来介绍如何安装 mingw 的 因为安装方式很傻瓜 通过网络安装 根据提示 一步一步往下设置就可以了 但我发现网络安装的速度实在不敢恭维 几 kb s 甚至 0 xx kb s 的速度去下载一个 9mb 多的软件包实在太折磨人了 于是 我找到了一个既傻瓜又快 速的安装方法 如下 我下载的 mingw 安装程序为 MinGW 5 1 3 exe 第一次打开之后它会产生一个 mingw ini 配置文件 里面是相关版本的软件包信息 三个组合包 current previous candidate 我打算安装 candidate 版本的 下面分别是相应的软件包信息 binutils binutils 2 17 50 20060824 1 tar gz 21940 core gcc core 3 4 5 20060117 1 tar gz 8644 gpp gcc g 3 4 5 20060117 1 tar gz 16140 g77 gcc g77 3 4 5 20060117 1 tar gz 5161 ada gcc ada 3 4 5 20060117 1 tar gz 33352 java gcc java 3 4 5 20060117 1 tar gz 46767 objc gcc objc 3 4 5 20060117 1 tar gz 4559 make mingw32 make 3 81 2 tar gz 720 那么我现在只需要去 下载上述软件包中我需要 的包即可 用 flashget 或者 thunder 下载起来 速度可就快多了 把下载的软件包和 MinGW 5 1 3 exe 放在同一目录 再双击打开它 就可以顺利的安装完 mingw 了 如果你喜欢动手 还可以这样来安装如果你喜欢动手 还可以这样来安装 mingw 下载的文件可以用 WinRAR 解开 接着操作如下 1 建立文件夹 C MinGW 假设你把 mingw 安装在 C 盘根目录 2 解压 binutils 2 17 50 20060824 1 tar gz 到这个文件夹 并在控制台中执行下面的命令 cd info ren dir dir binutils 3 解压 gcc core 3 4 5 20060117 1 tar gz 到这个文件夹 并在控制台中执行下面的命令 copy dir dir gcc copy dir dir binutils 4 解压 gcc g 3 4 5 20060117 1 tar gz 到 MinGW 5 解压 mingw runtime 3 10 tar gz 到 MinGW 6 解压 w32api 3 7 tar gz 到 MinGW 在控制台中执行 ren dir dir gcc binutils 7 解压 mingw32 make 3 81 1 tar gz 到 MinGW 在控制台中执行 copy dir dir gcc binutils 更多细节可以参看这里 http www mingw org MinGWiki index php Install 20MinGW 你如果需要增加其他语言的编译支持 也是同样的方法安装相应的包 接下来要做两个设置 1 拷贝一份 MinGW bin 下的 mingw32 make exe 改名为 make exe 同样是放在 MinGW bin 下面 2 设置 windows 系统的环境变量 编辑 Path 变量 在变量值的最前面最前面添加 C MinGW bin 这是为了防止和 VC NET 之类的 make 命令冲突 接下来安装 MSYS 你只要下载下面两个包就可以了 MSYS 1 0 10 exe msysDTK 1 0 1 exe 安装 MSYS 1 0 10 时 接受所有默认的选项 或者依照个人习惯设置 安装到最后会出现 一个 DOS 窗口 输入 y 回车继续 接着窗口中会出现 Do you have MinGW installed yn 当然是选择 y 下面程序会询问的安装路径 Please answer the following in the form of c msys Where is your MinGW installation 输入 C MinGW 你如果安装在其他路径就输入相应的路径 MINGW GCC 4 3 0 安装与配置 解决安装与配置 解决 CREATEPROCESS 问题 问题 首先 下载 Mingw TDM 4 3 0 版本 有两种选择 GCC 4 3 0 tdm 2 Default SJLJ exceptions 和 GCC 4 3 0 tdm 2 With DW2 Exceptions 可以根据 SJLJ or DW2 Dwarf 2 异常模型来选择需要下载的版本 通常情况下 win32 平 台下选择 SJLJ set jump long jump 模型 然后还需要去 Mingw 官网下载 binutils mingw runtime mingw runtime 3 14 tar gz 494KB w32api w32api 3 11 tar gz 1 55MB 也可以选择安装以下组件 mingw utils mingw32 make 可以选择最新的 mingw32 make 3 81 20080326 2 gdb 可以选择最新的 6 8 试验版 把这些东西都下载下来 然后解压到不同的目录 每个目录里面大概都会有 bin include lib man 这样的目录 要做的就是合并它们 也就是拷贝到同一个目录里面 注意可能有些文件会重复 一般来说 GCC 4 3 0 TDM 包里面的文件比较重要 不要用其他的 包里面的文件覆盖了它 然后就可以得到一个完整包含 gcc g binutils gdb make 等的目录了 此时 在 windows 环境变量中的 path 变量里面添加该目录的 bin 子目录 就可以在 cmd 窗口中调用 gcc 和 g 进行编译了 如果你不想污染了环境变量 也可以写个 bat 假设你的 mingw 目录是 C mingw bin set path C mingw bin path 现在还没有结束 需要进行两个地方的设置 1 make mingw 官方提供的 make 工具 名称不是简单的 make 而是 mingw32 make exe 把它 改名成 make exe 或者复制一份为 make exe 都可以 2 gcc CreateProcess No such file or Directory 错误 这个问题在 google 里面很多人发问 但是没有一个完整的解答 下面给出一 个完整的解答 产生这个错误有两个原因 第一是 gcc 无法找到安装目录里面的 libexec 目录里面的工具 通常这些工具 包括 cc1 exe cc1plus exe collect2 exe 它们通常存放在 安装目录 libexec gcc mingw32 4 3 0 第二是 gcc 无法找到 mingw 目录里面 binutils 的工具 它们通常存放在 安装目录 mingw32 bin 这两个目录的名字并不完全固定 根据不同组织编译的 gcc 各有不同 比如 mingw 官方编译的 gcc4 3 0 alpha 上述目录就是 安装目录 gcc i386 pc mingw32 4 3 0 而官方提供的 binutils 包里面是 安装目录 i686 pc mingw32 bin 只要这两个地方没有设置好 就可能导致 CreateProcess 错误 那么 有没有 什么好办法能够确定这里应该怎样命名呢 办法是用 16 进制编辑器打开 gcc exe 搜索 GCC EXEC PREFIX 当搜索到该字符串 不止一个 时 观察后面是否出现版本号 4 3 0 如果出现 后面紧接着的就是路径 如果是 mingw32 那么上面的命名就应该是 安装目录 libexec gcc mingw32 4 3 0 安装目录 mingw32 bin 如果是其他的例如 i686 pc mingw32 那么名称相应的变为 安装目录 libexec gcc i686 pc mingw32 4 3 0 安装目录 i686 pc mingw32 bin 好了 可以测试一下你的 hallo world 程序了 使用区别 cygwin gcc 和 MinGW 都是 gcc 在 windows 下的编译环境 但是它们有什么区别 在实际工作中如何选择这两种编译器 cygwin gcc 完全可以和在 linux 下的 gcc 化做等号 这个可以从 boost 库的 划分中可以看出来端倪 cygwin 下的 gcc 和 linux 下的 gcc 完全使用的是相同 的 Toolsets 所以完全可以和 linux 一起同步更新 gcc 版本 而不用担心问题 并且在 cygwin gcc 做的东西 不用 win32 的 可以无缝的用在 linux 下 没有任何问 题 是在 windows 下开发 linux 程序的一个很好的选择 但是在 cygwin gcc 下 编译出来的程序 在 windows 执行必须依赖 cygwin1 dll 并且速度有些慢 如果不想依赖这个东西的化 必须在 gcc 的编译选项中加入 mno cygwin 加入 这个选项其实 gcc 编译器就会自动的选择在安装 cygwin gcc 时安上的 mingw 这个 mingw 就是 gcc 的一个交叉编译 对于 mingw 作为 gcc 在 windows 上的一个实现 由于不像 cygwin 的 gcc 在一 个模拟 linux 上运行 同时相当一部分 linux 的工具不能够使用 不过现在已 经有 Msys 这个模拟 unix 的 shell 可以解决很多的问题 不过没有 cygwin 好 用 而 cygwin gcc 的 no cygwin 选项又依赖于 mingw 的支持 所以更新的更 慢的 现在只是到 3 3 3 在 mingw 下也是可以升级 gcc 的 不过需要使用 msys 升级方法和在 cygwin 和 linux 下差不多 就不再罗嗦了 不过就我的 升级经验来看好像都不太顺利 具体深入的测试 我也没有时间做了 也是可以让 cygwin 的最新安装的 gcc 支持 no cygwin 需要再做一遍交叉编 译 但是我不会做 只好算了 呵呵 也许那一天我把这个搞定 再开一个贴 吧 根据以上的分析 如果在 windows 开发 linux 程序 cygwin 是很好的选择 如果你开发的程序不介意有一个 cygwin1 dll 的话 也是可以选择 cygwin 的 如果你是想开发 windows 下的程序 还要必须用 gcc 的化 mingw 是很好的一 个选择 但是在 windows 下有太多的编译器了 bc vc intel c 顺便说就题外的化 据说 gcc4 0 0 性能有很大的提升 如果我升级完 gcc4 后 再编译一把 gcc4 是不是以后的编译性能会提高很多呢 有机会一定要测试一下 了 呵呵 2 基本区别 Unix 下编译通过的 C 代码 在win32下编译是不能通过的 当然 Unix 和win32 的 API 都是符合标准 C 也就是说 大多数函数调用在 unix 和win32下是相同的 但是 unix 有自己一些独特的 API 如 fork spawn signals select sockets 等 如果 代码中使用了这些 API 在 win32 下当然找不到对应的库 但是 这些 API 的功能在 win32 中也能实现 也许你已经发现了一个能让 window 编译 Unix 风格代码的方法 1 修改编译器 让 window 下的编译器把诸如 fork 的调用翻译成等价的形式 这就是 mingw 的做法 2 修改库 让 window 提供一个类似 unix 提供的库 他们对程序的接口如同 unix 一样 而这 些库 当然是由 win32 的 API 实现的 这就是 cygwin 的做法 我知道 syscall0 int fork 这个宏展开后就是调用 int 0 x80 并传入 NR fork 也就是 2 并最后导致调用 sys call table 2 sys fork 函数 可是 代码里明明写的是调用了 fork 函数啊 又不是调用宏 syscall0 int fork 那 么怎么从 fork 转到 syscall0 int fork 的 难道是因为 main c 开始部分定义的 static inline syscall0 int fork 宏的作用 还真不太理解 static inline syscall0 int fork 这行的具体的含义 那位牛人兄弟 给解释一下 在 main c 中 static inline syscall1 int setup void BIOS 是不是编译器在刚开始就把 syscall1 int setup void BIOS 变为 setup void asm volatile int 0 x80 a res NR name b long a if res 0 return type res errno res return 1 redgrid 答 是的 在 precompile 时 关于关于 intint sys setup voidsys setup void BIOS BIOS 的问题的问题 int sys setup void BIOS 是由 setup v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学自然观察说课稿2025年设计
- 系统性红斑狼疮自身抗体谱的临床意义解读
- 音乐游戏 大鹿说课稿2025年小学音乐一年级下册(2024)人音版(2024 主编:赵季平杜永寿)
- 对称矩阵合同性质与合同关系合同三篇
- 精准营养在代谢缺陷管理中的实践
- 初中生劳动实践体验主题班会2025说课稿
- 等离子刀在肥胖患者优化
- 2026年孩子注意力不集中家庭干预方法
- 2026年风电项目开发与选址评估
- 空气污染物与女性胎儿生长受限的机制研究
- 2026云南曲靖市沾益区高投物业服务有限公司物业工作人员招聘6人笔试模拟试题及答案解析
- GB/Z 177.7-2026人工智能终端智能化分级第7部分:汽车座舱
- 成都湔江投资集团有限公司2026年春季第一批次招聘考试参考题库及答案解析
- 2026四川泸州金桂投资有限公司第一批次招聘26人备考题库附答案详解(完整版)
- 2026浙江宁波市北仑区残疾人联合会招聘编外用工1人笔试备考试题及答案详解
- 2026年高考物理终极冲刺:专题12 动量守恒定律及其应用(二大题型)原卷版
- 2026西藏中考语文查缺补漏专练含答案
- 学校出入境请假审批制度
- 2026年江苏省宿迁市中考物理一模试卷(含答案)
- 2025年纪委面试真题及参考答案
- √高考英语688高频词21天背诵计划-词义-音标-速记
评论
0/150
提交评论