当前位置: 首页 > news >正文

Dev-Cpp/Mingw32 环境介绍(1)

Dev-Cpp/Mingw32 环境介绍(1)

前言


对于现在越来越多得关于编程方面得问题和商业公司对版权问题的担心。所以向各位推荐一款类似于VC的IDE。这款IDE所使用的编译程序是 GCC的Win32版本 Mingw32。而IDE本身也是GPL协议的产物。所以,不论是商业用户,还是个人用户都能够自由的使用她,而不必为使用盗版软件而提心吊胆的。另外,由于Mingw32是GCC的Win32版本。所以,也为Win32的程序员可以了解一下Unix和类Unix下的编程感觉。而且,Mingw32对Win32函数的支持也是很不错的。希望,我们的Mingw32之旅可以带给你快乐。

介绍


有关Dev-Cpp的介绍,我在这里不想多做解释。因为下面会具体的介绍和讲解的。我在这里只是想要介绍一下有关GCC的内容。因为,Dev-Cpp所使用的Mingw32是一款GCC编译器。所以,对GCC的了解有助于使用Dev-Cpp。

gcc.exe
这是一个C语言的编译器,负责编译C语言。这个也许大家都知道。不过,在这里我要先向大家说明一下。gcc只是一个C语言的编译器。不能识别C++代码。所以,以前所说的gcc可以编写C++是一个误传。因为,我们通常所说的GCC不是gcc.exe而是GCC的一套程序。其中就包括可以编译C++语言的g++.exe

如果,你不确定这个gcc的版本,可以用如下的命令查看。

gcc -v

关于编译,gcc可以通过命令符编译。

gcc source.c -o binary

以上的命令,是让gcc直接由.c代码编译成可执行代码。
也可以这样。

gcc -c source.c -o code.o
gcc code.o -o binary

这样就生成了一组二进制代码,然后在通过二进制代码生成可执行程序。

g++.exe
刚才已经说过了,这个是一个用于编译C++代码的程序。基本用法和gcc一样。所以这里不再介绍了。只是让各位了解一下,这个程序是编译C++代码的。

gdb.exe
用于调试程序的。功能非常强大。可以调试C,C++等语言。据说还可以调试Java程序。不过我没有试过。对于gcc/g++编译出来的程序。需要再编译时加上 -g 参数。gdb才能进行调试。有点像VC的debug。

make.exe
这是一个非常有用的程序,可以用来发布程序和编译复杂关系的代码组。其实有点像提示符版的安装程序。不同的是,安装程序是一段二进制执行代码,而它是一个文本文档。
make所执行的是makefile文件。文件是一个文本文档,里面包含了程序的编译规则。如果要用提示符调用的话可以用如下方法。

make -f makefile

然后,make会根据makefile所提供的编译关系进行编译和安装。下面是一段makefile的内容。请注意,其开头的空白是 tab。

release : main.o
gcc main.o -o main
main.o : main.c
gcc -c main.c -o main.o

然后,通过命令 make -f makefile release 就可以执行了。
make会根据文件的创造日期来判断是否要对main.o进行重新编译。也就是说,make可以知道作者修改了哪些文件,并将修改过的文件重新编译。再连接成程序。这样有助于开发者节省开发周期上的时间和精力。

好了,希望上面的介绍能让各位满意。在此,我只介绍一些主要的程序,不一一介绍其他的了。接下来我们介绍一下gcc生成的文件。

*.o 其实就是VC生成的*.obj
lib*.a 就是VC中用的*.lib静态链接库。只是,每个库必须用lib开头。在调用的时候,只要提供*的内容就可以了。
*.so 虽然在Win32中很少用,几乎不用但,还是介绍一下。这个就是Win32中的*.dll动态连接库。但是,在Ming32中已经支持dll了。

好了,关于gcc的介绍就到这里。下面我们开始进入正题。

第一章 安装Dev-Cpp


在这里,我不介绍Mingw32如何安装。因为Dev-Cpp中已经包含了Mingw32。如果您想了解Mingw32如何安装,可以查看其他相关的资料。这里不作阐述。
首先,我们必须下载一个Dev-CPP的安装程序。Dev-Cpp的官方网站是
http://www.bloodshed.net。Dev-Cpp的网页是http://www.bloodshed.net/dev/devcpp.html最新版本应该是Dev-Cpp 4.9.9.0它的下载地址是 http://umn.dl.sourceforge.net/sourceforge/dev-cpp/devcpp4990setup.exe 。这个下载的文件中包含了全部的内容。在得到安装程序以后,我们就来安装了。
不论如何,我想,安装这种小问题,我想不用再一步步介绍了吧。毕竟我们都是程序员,如果,连安装都不会那真是……。不过,如果在安装中有什么问题,可以提出。我会尽力帮你解决的。
双击安装程序后,就按照平常安装的方式安装,建议按照默认安装。当然安装的路径就算便你了。在第一次安装以后,程序会提示你界面的设置。如果你喜欢英文就选择English。如果喜欢中文的,就选择Chinese。注意不要选择Chinese(TW)除非你安装了繁体中文。并喜欢繁体中文。然后是图标设置。推荐你使用New Look。如果你喜欢其他的也可以。还有就是是否使用XP风格。这些都随便你了。
好了就介绍到这里,到此。我已经介绍了Dev-Cpp的安装,如果顺利。你们运行以后,就会看到如下的界面。

接下来介绍一下,有关Dev-Cpp在windows中的设置。由于GCC有很多的东西是要在提示符下进行操作的,特别是为Dev-Cpp安装,编译一些工具包。所以,我们就Mingw32添加到系统命令中,有助于以后方便调用。
方法很简单,右键单击 我的电脑。然后选色属性。使用 高级 选项卡。点击环境变量按钮。点击 Path 项,点击编辑按钮。然后将DevCpp安装目录中的bin目录的路径添加到这个选项值的后面。注意,使用 ; 分隔。确定后启动命令提示符。输入 gcc -v 看。一切都好了。现在你就可以像在Linux环境下一样在Win32环境下编译程序了。

至此,您的Dev-Cpp环境就算弄好了。下面我们将介绍如何制作程序。

第二章 新建项目与编译


本章我们要进行实战训练了。介绍一下如何在Dev-Cpp下进行项目新建和编译。我相信你一定会慢慢喜欢上这个编译环境的。
点击文件菜单,选择新建,点击工程。在出现的对话框中选择你所需要的程序种类。如下图所示。

其中,Windows application是Win32图形界面。Console Application是Win32控制台程序。Static Library是Win32的静态连接库。DLL是Win32的动态连库。Empty Project是更具已有的项目类型创造一个新的项目类型。下面的内容是选择使用的语言,如是C语言还是C++语言。还有就是项目名称。这个名称将作为程序编译后的可执行程序的名称。
在这里为了方便叙述,我们就新建一个Console Application项目好了。至于使用的语言,就随便你了。我这里就用C语言为例了。点击确定后,提示项目保存的路径,建议您选择其他路径不要使用默认的路径,因为默认的路径是安装目录。如果放在那里的话,会很混乱的。在其他目录中,新建一个文件夹(当然不新建也可以,只是这样便于管理)将项目保存在那里。然后,在点击保存按钮(这个按钮就是一张磁盘,和Windows里的一样)或者从文件菜单中选择保存或者Ctrl + S。这些都可以。这样,Dev就会提示你项目中默认文件的保存目录。通常名为main.*。选择一个路径,保存就好了。(建议和项目文件保存在一起)

下面我们就来编译程序了。点击工具栏,第二行,第一个彩色的按钮。就进行编译了。这时会出现一个编译窗口,显示编译的进度。你可以通过环境选项来设置它。在编译完成后,点击第二个白色的按钮,就可以运行程序了。是不是很方便?我也是那么觉得。

接下来,我就来介绍一下,有关项目目录内的文件的作用。

main.c 程序的C语言源代码。
main.o main.c的二进制代码。
Makefile.win 就像我上面所说的,这个是项目的Makefile文件。用make命令可以编译程序的。
*.dev *的内容视你项目的名称所定。这个是项目文件,用于记录你对项目的设置。有关文件内个字段的作用就不做介绍了。
*.exe 你所生成的可执行程序。

最后,我介绍一下如何不用IDE来编译生成程序。
首先进入您项目所在的目录。然后用如下命令。

make -f makefile.win all

就可以编译了。当然,也可以直接通过编译源代码来实现。具体的方法,我已经在开头介绍过了。这里就不再重复介绍了。

文外音:
文章就暂时介绍到这里,以后还会继续介绍。有关Dev-Cpp/Mingw32更多的内容以后会一一为各位展示。敬请期待。
另外,还希望各位多多指教。我的格言:不论是程序还是思想,唯有通过不断的交流才能愈加完善。

STUDIO 软件开发组

北斗星君(黄庠魁)

相关文章:

  • 新浪体育图片新闻动态效果代码
  • golang切片的容量长度
  • 看中国足球,哭笑不得
  • golang盲点扫描copy
  • SMS 2003 客户端常见问题
  • golang里面小练习使用map和for
  • 你学会调试程序了吗?(转)
  • golang结构体的首个地址值等于其本身的地址值
  • golang文件拷贝
  • C++的学习感想(转载)
  • golang读取目录里面文件
  • API函数大全(转载)
  • golang文件目录读取和文件的写入
  • 访客在此留言
  • threejs入门
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【css3】浏览器内核及其兼容性
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • canvas绘制圆角头像
  • emacs初体验
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java多线程(4):使用线程池执行定时任务
  • Js基础——数据类型之Null和Undefined
  • oldjun 检测网站的经验
  • 分享一份非常强势的Android面试题
  • 简析gRPC client 连接管理
  • 数据科学 第 3 章 11 字符串处理
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • HanLP分词命名实体提取详解
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转) ns2/nam与nam实现相关的文件
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .net mvc部分视图
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • // an array of int
  • @javax.ws.rs Webservice注解
  • []C/C++读取串口接收到的数据程序
  • [Android]常见的数据传递方式
  • [C#]猫叫人醒老鼠跑 C#的委托及事件
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现
  • [CTSC2014]企鹅QQ
  • [LeetCode]—Longest Palindromic Substring 最长回文子串
  • [LeetCode周赛复盘] 第 312 场周赛20220925
  • [Machine Learning][Part 7]神经网络的基本组成结构
  • [NLP] 使用Llama.cpp和LangChain在CPU上使用大模型