我正在开发一个项目,要求我将c ++程序(prog1.cpp)转换为unix文本文件。我正在使用命令
dos2unix prog1.cpp
但是,我的makefile生成的文件无法正常工作。 make all应该生成一个可执行文件hantow,但是在执行hantow时,shell会读取:
-bash: hantow: command not found
我的代码没问题,没有错误。我可以看到目录中有一个名为hantow的文件,我已经运行了
chmod 755 hantow
我想问一下,这是你应该采取的唯一步骤ie.dos2unix还是有任何后续命令?
答案 0 :(得分:1)
嗯,文本文件非常普遍,有一个大的(或次要的)问题:行结尾。
传统上,文本文件在不同系统上使用不同的行结尾:
CRLF
LF
Mac上的CR
幸运的是,Apple转移到 OSX (前一段时间)后,切换到正确的Un * x行尾。所以这些天你只能找到两个不同的行结尾。
与此同时,几乎任何体面的文本编辑器将处理任何行结束约定的文本文件(我认为最大的例外是notepad.exe
仍然只能处理{{ 1}})。
此外,任何CRLF
/ C
编译器都不关心实际的行尾。
因此没有真正的需要将“c ++程序转换为unix文本文件”。
OTOH,我仍然希望尽可能使用本机行结尾,C++
是一个完美的工具。 (虽然现代VCS会自动为您处理行结束转换,因此这些天对dos2unix
的需求较少。)
最后:您对dos2unix
的问题与此无关。
答案 1 :(得分:0)
要回答您的具体问题:dos2unix
通常应足以将文件的行结尾从CRLF
转换为LF
。可能还有其他原因导致代码无法执行,例如,如果代码使用了您环境中不可用的某些其他特定于操作系统的功能。还要确保Makefile和其他输入文件具有正确的行结尾。您可以在该文件上调用file
,以查看它是否输出..., with CRLF line terminators
之类的内容,在这种情况下您也可能希望在其上运行dos2unix
。