2

我最近从http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip安装了 cygwin-x86_64 和 gtk,从http://protz安装了ocaml 。 github.io/ocaml-installer/。每当我从“为 cygwin 预编译”的二进制文件(例如 ocaml 或 gtk)运行命令时,它都会在输出的末尾附加一个 ^M。例如,

$ ocamlc -where > foo; cat -v foo
D:/OCaml/lib^M

我该如何解决这个问题?

更新:如果我将二进制文件复制到~/(或其他一些 cygwin 路径),那么我不会得到^M输出。它仅在二进制文件位于 MS DOS 位置时发生。有没有办法在不移动我的二进制文件的情况下解决这个问题?

运行mount

$ mount D:/cygwin64/bin on /usr/bin type ntfs (binary,auto) D:/cygwin64/lib on /usr/lib type ntfs (binary,auto) D:/cygwin64 on / type ntfs (binary,auto) C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto) D: on /cygdrive/d type ntfs (binary,posix=0,user,noumount,auto) E: on /cygdrive/e type ntfs (binary,posix=0,user,noumount,auto) Y: on /cygdrive/y type afs (binary,posix=0,user,noumount,auto) Z: on /cygdrive/z type afs (binary,posix=0,user,noumount,auto)

4

2 回答 2

0

^M 是Carriage Return,在 Windows 中使用,但在类 Unix 系统中不使用。使用 sed、tr 或您喜欢的工具从文件中删除 CR。如果您在 Windows 命令行中,那么

tr -d '\r'  < foo.txt > bar.txt
sed -e 's/\r//g' foo.txt > bar.txt

如果您使用的是启用 vi 模式的终端,那么

tr -d '^M'  < foo.txt > bar.txt
sed -e 's/^M//g' foo.txt > bar.txt

^M 可以通过 Ctrl + M 键输入

于 2013-11-09T01:35:45.107 回答
0

对我来说,protz 混合 cygwin 和 ocaml-installer 听起来是错误的。最后一个是用于本机 Windows(并且在该安装程序中 cygwin 仅用于提供 shell)。如果您想在 cygwin 中使用 ocaml(带有 cygwin gcc 编译器和库),那么您必须从 cygwin 存储库(通过 cygwin-setup.exe)安装 ocaml。本机 Windows 程序和 cygwin 编译程序之间存在差异,您很难将它们混合用于开发。

于 2013-11-09T05:45:21.140 回答