Windows下的Linux开发环境

作者:网络    发布时间:2020-04-25 13:06    浏览:

[返回]

Cygwin 3.1.0 发布了,Cygwin是许多自由软件的集合,最初由Cygnus Solutions开发,用于各种版本的Microsoft Windows上,运行UNIX类系统。Cygwin的主要目的是通过重新编译,将POSIX系统(例如Linux、BSD,以及其他Unix系统)上的软件移植到Windows上。Cygwin移植工作在Windows NT、Windows 2000、Windows XP以及Windows Server 2003上比较好,在Windows 95和Windows 98上,相对差劲一些。目前Cygwin由Red Hat等负责维护。

一 cygwin
Cygwin 是一个用于 Microsoft® Windows® 操作系统的类 UNIX® 环境。它包含一个真正的 UNIX shell、一个 Portable Operating System Interface (POSIX) 模拟库以及数千个 UNIX 实用程序。

新版本包括:

作用:
1)作为Linux/Unix的初学者,可以使用cygwin来在windows上模拟使用Linux/Unix;
2)可以基于cygwin来从windows访问Linux/Unix;
3)可以在Windows上模拟Linux的开发环境,比如使用GUN的编译和调试工具来做程序开发;
4)可以基于cygwin中间层实现Linux/Unix应用程序到windows的无代码修改的移植;(cygwin dll实现了对windows底层API的Linux/Unix风格的封装)
5)注意,cygwin中运行的Linux/Unix工具其实是这些工具的对应的windows的exe版本,cygwin不能直接运行Linux/Unix的应用程序;

* cygwin-3.1.0-1
* cygwin-devel-3.1.0-1
* cygwin-doc-3.1.0-1

主页:

该版本包含一些新特性和 bug 修复,主要有:

二 cygwin的安装
Cygwin 是一个用于 Windows 的类 UNIX shell 环境。 它由两个组件组成:一个 UNIX API 库,它模拟 UNIX 操作系统提供的许多特性;以及 Bash shell 的改写版本和许多 UNIX 实用程序,它们提供大家熟悉的 UNIX 命令行界面。前一个组件是一个 Windows 动态链接库 (DLL)。后一个组件是一组基于 Cygwin DLL 的程序,其中许多是用未经修改的 UNIX 源代码编译的。它们合在一起提供大家熟悉的 UNIX 环境。

- Add 24 bit color support using xterm compatibility mode in Windows 10
  1703 or later.  Add fake 24 bit color support for legacy console,
  which uses the nearest color from 16 system colors.

- Support pseudo console in PTY. Pseudo console is a new feature
  in Windows 10 1809, which provides console APIs on virtual
  terminal. With this patch, native console applications can work
  in PTYs such as mintty, ssh, gnu screen or tmux.

- New APIs: sched_getaffinity, sched_setaffinity, pthread_getaffinity_np,
  pthread_setaffinity_np, plus CPU_SET macros.

- New APIs: dbm_clearerr, dbm_close, dbm_delete, dbm_dirfno, dbm_error,
  dbm_fetch, dbm_firstkey, dbm_nextkey, dbm_open, dbm_store.


What changed:
-------------

- FIFOs can now be opened multiple times for writing.
  Addresses: https://cygwin.com/ml/cygwin/2015-03/msg00047.html
             https://cygwin.com/ml/cygwin/2015-12/msg00311.html

- If a SA_SIGINFO signal handler changes the ucontext_t pointed to by
  the third parameter, follow it after returning from the handler.

- Eliminate a header file name collision with <X11/XLocale.h> on case
  insensitive filesystems by reverting <xlocale.h> back to <sys/_locale.h>.

- Allow times(2) to have a NULL argument, as on Linux.
  Addresses: https://cygwin.com/ml/cygwin/2019-09/msg00141.html

- Improve /proc/cpuinfo output and align more closely with Linux.

- Raise stackdump frame limit from 16 to 32.
  Addresses: https://cygwin.com/ml/cygwin/2019-11/msg00038.html


Bug Fixes
---------

- Fix select() on console in canonical mode.  Return after one line is
  completed, instead of when only one key is typed.

- Make console I/O functions thread-safe.

- Define missing MSG_EOR.  It's unsupported by the underlying Winsock
  layer so using it in send(2), sendto(2), or sendmsg(2) will return -1
  with errno set to EOPNOTSUPP and recvmsg(2) will never return it.

- Fix a timerfd deadlock.
  Addresses: https://cygwin.com/ml/cygwin/2019-06/msg00096.html

- Fix sigpending() incorrectly returning signals for unrelated threads.
  Addresses: https://cygwin.com/ml/cygwin/2019-07/msg00051.html

- Fix a hang when opening a FIFO with O_PATH.
  Addresses: https://cygwin.com/ml/cygwin-developers/2019-06/msg00001.html

- Don't append ".lnk" when renaming a socket file.
  Addresses: https://cygwin.com/ml/cygwin/2019-07/msg00139.html

- Make tcsetpgrp() return -1 if its argument is negative.
  Addresses: https://cygwin.com/ml/cygwin/2019-07/msg00166.html

- Avoid mistakenly moving a process under debugger control into the
  process group of the debugger.
  Addresses a problem visible in GDB 8.1.1, related to
  https://cygwin.com/ml/cygwin/2019-07/msg00166.html

- Return ENOEXEC from execve for arbitrary files only if the files are
  executable.
  Addresses: https://cygwin.com/ml/cygwin/2019-08/msg00054.html

- Fix off-by-one in environment evaluation leading to an abort.
  Addresses: https://cygwin.com/ml/cygwin-patches/2019-q3/msg00069.html

- Make output of /proc/[PID]/stat consistent with getpriority().
  Addresses: https://cygwin.com/ml/cygwin/2019-08/msg00082.html

- 64 bit only: Avoid collisions between memory maps created with shmat
  and Windows datastructures during fork.
  Addresses: https://cygwin.com/ml/cygwin/2019-08/msg00107.html

- Make rmdir fail if its argument is a symlink.
  Addresses: https://cygwin.com/ml/cygwin/2019-09/msg00221.html

- Fix an assertion failure on an invalid path.
  Addresses: https://cygwin.com/ml/cygwin/2019-09/msg00228.html

- If the argument to mkdir(2) or rmdir(2) is 'x:', don't strip the
  trailing backslash.
  Addresses: https://cygwin.com/ml/cygwin/2019-08/msg00334.html

- Make spawnvp, spawnvpe fail if the executable is not in $PATH.
  Addresses: https://cygwin.com/ml/cygwin/2019-10/msg00032.html

- Fix parent/child relationship after parent dies.
  Addresses: https://cygwin.com/ml/cygwin/2019-09/msg00263.html

- Fix a security problem if Cygwin is installed into a path
  with spaces in it.
  Addresses: https://cygwin.com/ml/cygwin/2019-11/msg00018.html

- Fix an assertion failure when /cygdrive contains an offline network
  drive.
  Addresses: https://cygwin.com/ml/cygwin/2019-12/msg00016.html

- Fix return value of ilogbl for 0 input.
  Addresses: https://cygwin.com/ml/cygwin/2019-12/msg00074.html

- Let strtold set errno to ERANGE on underflow per POSIX.
  Addresses: https://cygwin.com/ml/cygwin/2019-12/msg00072.html

Cygwin使用安装向导程序setup.exe来实现cygwin的在线安装。 同时setup.exe文件可以重新安装软件,可以添加、修改或升级 Cygwin 配置的组件。

(文/开源中国)    

在 Windows 系统上打开浏览器,通过访问 下载 Cygwin 安装程序。安装程序本身非常小(大约 600KB),因为大多数 Cygwin 软件是在安装过程中下载的。完成下载之后,按照以下步骤安装 Cygwin:

  1 运行安装程序。
  澳门电子游戏手机版 1
  2 单击 Next 进入下一个屏幕,选择要执行的安装类型。单击 Install from Internet
  3 单击 Next,然后选择一个安装目录。
  澳门电子游戏手机版 2   
  在大多数情况下,推荐的安装选项是合适的,也可以进行定制,但是要注意几点:   1)不要在 Windows 系统的根目录(比如 C:)中安装 Cygwin。最好把 Cygwin 安装在它自己的子目录中,比如默认目录(C:cygwin)或 C:Program Filescygwin。(您选择的目标目录将成为模拟的 UNIX 环境的根目录 /。例如,如果在 C:cygwin 中安装,那么虚拟的 /usr/bin 实际上是 C:cygwinusrbin) 。   2)对于 Install For 选项,不要选择 Just Me。   3)把 Default Text File 类型设置为 Unix,从而尽可能提高与其他 UNIX 机器上存储的现有文件的兼容性
  4 单击 Next。在下一个窗口中,选择一个存储 Cygwin 所需的数据的目录。不要选择前一步中选择的 Cygwin 目录。 如果可能的话,应该在有至少 1GB 空闲空间的驱动器上创建或选择一个目录。
  5 再次单击 Next,选择使用的 Internet 连接类型。通常应该选择 Direct Connection。
      6 再次单击 Next。稍等一会儿,Cygwin 会下载当前的镜像站点列表,让您选择一个镜像站点,
  澳门电子游戏手机版 3
  如果不确定应该选择哪个站点,就选择地理位置比较近的站点。
  7 再次next, 经过短暂的延迟之后,安装程序显示可用的类别和包的完整列表。
  澳门电子游戏手机版 4
  显示一个类别的部分内容。单击加号 (+) 展开对应的类别;单击 “循环” 标志在 Skip(忽略此包)和包的所有可用版本之间循环。如果 Cygwin 提供一个实用程序的多个版本,应该选择满足您的需求的实例。顺便说一下,如果选择 B 列,就会下载二进制包;选择 S,也会下载源代码。

在 Cygwin 中可用的包超过 1,000 个,所以应该只选择您需要的类别和包。(安装所有 Cygwin 包会占用超过 800MB 的磁盘空间)。以后随时可以添加整个类别或单独的包:只需重新运行 Cygwin 安装程序。(还可以在任何时候用相同的安装程序删除或更新包)。

  8 选择您需要的工具之后,单击 Next,下载过程开始!
  澳门电子游戏手机版 5

进度条分别反映每个包的下载进度、总下载进度和磁盘使用量。

  9 最后,安装程序安装软件并(可选地)在 Start 菜单和桌面中添加快捷方式。单击 Finish

  10 通过使用 Start 菜单或双击 Cygwin 图标(如果添加了这些快捷方式的话),启动 Cygwin;也可以执行 Cygwin 目录中的 Cygwin 脚本(比如 C:cygwinCygwin.bat)。

  澳门电子游戏手机版 6

  显示第一次启动 Cygwin 时的情况:它创建您的主目录,执行 shell 启动文件,显示提示。现在可以运行 UNIX 命令了!

三 cygwin使用
你可以使用几乎所有的linux/unix命令来操作你本地的windows系统。哈哈!
澳门电子游戏手机版,例如使用 df -h来查看你的磁盘的使用情况:
澳门电子游戏手机版 7
Cygwin 安装目录作为虚拟 UNIX 系统的根目录。Cygwin 把安装目录中的子目录映射到 UNIX 目录。它以单独的卷的形式提供 Windows 驱动器,比如 /cygwin/c。可以使用这样的虚拟路径启动 Windows 程序。请尝试输入 /cygdrive/c/Program Files/Internet Explorer/IEXPLORE.EXE 从命令行启动 Windows Internet Explorer®。(还可以使用 Tab 键自动展开路径的元素) 。

顺便说一句,如果要把 Windows 路径名转换为等效的 UNIX 路径名或者相反,可以试试内置命令 cygpath。在默认情况下,cygpath 产生 UNIX 路径名。使用 -w 选项产生 Windows 路径。

$ cygpath -w /cygwin/c/Program Files/Internet Explorer/IEXPLORE.EXE
c:Program FilesInternet ExplorerIEXPLORE.EXE

还有帮助沟通这两个环境的其他特性:

搜索