安装Cygwin
如果你现在正在学习C语言,而你又不希望使用微软提供的任何C语言的任何编译器,那么你应该考虑一下GCC。GCC是运行于类UNIX系统下的编译器工具集,这又引出了另一个让人头疼的问题,你没有一台现成的装有UNIX系统的机器可用,同时,你也不希望弄个笨重的虚拟机。
这时候,你应该考虑一下Cygwin。
Cygwin是一款运行于Windows下的UNIX环境模拟软件,安装了Cygwin,你就可以通过命令行使用UNIX下的多个工具,其中就包括了GCC。
有了这些,对于学习UNIX下的C语言编程,就差不多够了。
废话不多说了,下面看看怎么安装Cygwin:
第1步、下载安装程序
Cygwin是一款自由软件,由Cygnus Colutions公司(这是一家非常有名的软件公司)开发。你可以到它们的网站去下载Cygwin的安装程序。
网站的地址:http://www.cygwin.com/,进入网站首页。
找到setup-x86.exe或setup-x86_64.exe字样的链接地址,点击这个链接地址或右键另存为。
总之想办法把它保存到你的硬盘上,比如保存到D:/Cygwin/setup-x86_64.exe。
setup-x86.exe或setup-x86_64.exe的区别是:后者是64位的-_-!!!。
我选择下载setup-x86_64.exe,因为我的机器和操作系统都是64位的,下载之后,你会发现这个文件的大小还不到1M,不到1M的程序是怎么模拟UNIX环境的呢?这实在是太厉害了!
我想你似乎没有搞清楚,setup-x86_64.exe只是一个安装程序,它的作用是去官网上下载各种程序组件,这些组件共同协作才完成了UNIX系统的模拟,但它本身并不模拟软件。
第2步、运行安装程序
双击运行D:/Cygwin/setup-x86_64.exe,一路下一步、下一步…
我推荐你不要做任何修改,比如中间有些步骤允许你修改安装路径什么的,别去改它(但你要记住它,下面会用到这个路径),你为的是使用Cygwin来进行UNIX下的C语言学习,不是为了学习Cygwin的安装过程。主次一定要分清楚。
不断点击下一步,知道setup-x86_64.exe开始到官网镜像上去下载所必须的组件程序,安装过程是自动的,慢慢等着,如果网速不行,你需要耐心得慢慢等着。
第3步、启动模拟程序
从开始/菜单里面找找,看看是不是多了个Cygwin的程序(或者差不多的东西),点击打开它,模拟程序就启动了。
这是一个命令行程序,黑色的界面,但是进去之后很像是UNIX的命令行。在这里你可以使用基本的UNIX-Shell命令,比如你输入pwd,会显示你目前所在的目录。
比如我在自己的机器上运行pwd,会显示/home/test
/home/test是哪个目录呢?Windows上没有这个目录的啊。。。我替你解开这个疑团,你去Cygwin的安装路径下看看,里面除了home目录,dev、etc、lib、tmp、usr、var这些UNIX根目录下该有的目录,里面都有。
现在你应该明白了吧?
第4步、写个C语言程序试试
在模拟环境里输入gcc回车,看看会显示什么?
$ gcc
gcc.exe: no input files
可以看出来,gcc是可以使用的,但是指定的参数不对,提示没有指定程序文件。那么我们自己创建一个。为了方便我们就在home目录下创建一个C语言的hello world程序。
别想太复杂了,没人强制你使用vi编辑器写这个C语言程序,直接通过Windows的文件夹浏览方式进入home目录的实际目录,在下面右键创建一个hello.c的文件就行,用文本编辑器打开这个文件,输入如下内容,保存即可:
#include <stdio.h>
int main() {
printf("hello world!");
}
在命令行下输入如下命令进入home目录:
cd /home
再输入如下命令编译hello.c文件:
gcc hello.c -o hello
注意,-o的o是英文字母o,不是数字0
如果编译没有报错,会在home目录下生成一个名叫hello的文件,在命令行下输入如下命令,运行这个文件:
$ ./hello
hello world!
看看吧,打印出hello world!了,跟程序的逻辑一样。
完毕。
安装Cygwin的更多相关文章
- Windows下使用AutoSSH,并作为服务自启动(不用安装Cygwin)
之前的折腾过Windows下ssh的自动登录,比如这篇Windows下使用Xshell建立反向隧道,但是这个不能无交互的情况下自动连接(比如在连接新主机时),也就很难在服务中使用.解决方法还是得使用命 ...
- android NDK入门 windows下安装cygwin
一.Android NDK环境简介 Android NDK 是运行于Android 平台上的Native Development Kit 的缩写. Android 应用开发者可以通过NDK 调用C 或 ...
- Eclipse NDK 配置,无需安装Cygwin
Eclipse NDK 配置,不用安装Cygwin 文章转自http://www.cnblogs.com/chenjiajin/archive/2012/04/12/2444188.html 一.关于 ...
- Win下安装Cygwin中的SSH服务
windows和linux各有其优越性,可以安装在同一台电脑上,但切换要重启.同时拥有两台电脑,一台装win,一台装linux,自然非常好,但具备此条件的不多.本文介绍cygwin,它可以让你在win ...
- 下载安装Cygwin
下载程序 http://www.cygwin.com/ 安装程序 下载完成后,运行setup.exe程序,出现安装画面. 直接点“下一步”,出现安装模式的对话框,如下图所示: 这里可以看到有三种安装模 ...
- win10下安装Cygwin配置gcc编译环境
首先要说明的是,我个人安装cygwin的用途是为了使用kenlm工具训练通及语言模型. 注:统计语言模型工具有比较多的选择,目前比较好的有srilm以及kenlm,其中kenlm比srilm晚出来,训 ...
- windows下安装cygwin及配置(转)
reference:https://cygwin.com/install.html 对比:MinGW vs. CygWin https://www.cnblogs.com/findumars/p ...
- Windows 平台下安装Cygwin后,sshd服务无法启动
Windows 平台下安装Cygwin后,sshd服务无法启动 系统日志记录信息: 事件 ID ( 0 )的描述(在资源( sshd )中)无法找到.本地计算机可能没有必要的注册信息或消息 DLL 文 ...
- Eclipse NDK 配置,不用安装Cygwin
一.关于NDK:NDK全称:Native Development Kit.1.NDK是一系列工具的集合.NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用 ...
随机推荐
- Spring ProxyFactory
ProxyFactory 是 Spring AOP的实现方式之一.下面介绍下ProxyFactory的用法. 1.接口定义 public interface UserReadService { pub ...
- 用hdfs存储海量的视频数据的设计思路
用hdfs存储海量的视频数据 存储海量的视频数据,主要考虑两个因素:如何接收视频数据和如何存储视频数据. 我们要根据数据block在集群上的位置分配计算量,要充分利用带宽的优势. 1.接收视频数据 将 ...
- .NET常用操作小知识
一..NET截取指定长度汉字超出部分以“.....”表示 /// <summary> /// 将指定字符串按指定长度进行剪切, /// </summary> /// <p ...
- JAVA线程全局异常处理
大家平时写线程很多,但可能很少关注如何捕获线程的全局异常.其实jdk提供了两种捕获全局异常的方法,一种是基于整个线程类(staticsetDefaultUnaughtExceptionHandler( ...
- 网页媒体播放利器 - JW Player使用心得
序言 前段时间在做一个网站项目,要求能在线播放视频.音乐,这个以前还真没接触过.恰好今天在坛子里闲逛时,发现有同志对这方面也感兴趣,遂把这些整理了下,同时自己也可以复习下. 播放器需要满足以下需求: ...
- nginx rewrite 参数和例子
http://www.cnblogs.com/analyzer/articles/1377684.html ] 本位转自:http://blog.c1gstudio.com/archives/434 ...
- java编程思想第四版中net.mindview.util包
把 net那个包 放入到你编写的项目同一个文件夹下(与src文件夹平级的那个),然后刷新一下工程即可
- WinServer 之 发布WebService后调用出现" The test form is only available for requests from the local machine. "
当您尝试从远程计算机访问 Web 服务时,不会显示“调用”按钮.并且,您会收到以下错误信息: The test form is only available for requests from the ...
- 基础:c++中引用与java中的引用
using namespace std; class Point { public: double x; double y; Point(){} void setPoint(double x,doub ...
- Intent实现页面跳转
Intent实现页面跳转: 1. startActivity(intent) 2. startActivityForResult(intent,requestCode); onActivityResu ...