2011-06-24 76 views
29

我试图编译NIST生物识别图像软件,而且我一直有麻烦。我终于得到了源签出正确的,我没有问题,安装了Cygwin(我已经在过去使用它),但是当我去编译,我得到这个错误:

$ sh setup.sh </cygdrive/c/NBIS> [--without-X11] 
setup.sh: line 94: syntax error near unexpected token `$'in\r'' 
'etup.sh: line 94: ` case $1 in 

现在我敢肯定任何高级编码器都会前往setup.sh并寻找问题,但我不是一个真正的编码器(我只编译它,因为没有预编译的软件包),所以我不知道该怎么做。我没有使用cygwin安装任何库,我只是将所有内容都保留为默认值。我试图遵循NBIS手册,但我并不是很了解这一点,所以我正在苦苦挣扎。 Maybye看看它可能会发现我错过的东西:http://www.nist.gov/customcf/get_pdf.cfm?pub_id=51097

回答

7

Windows使用两个字符(CR和LF或\r\n)标记文本文件中一行的结尾。 Unix,Linux和(默认情况下)Cygwin使用单个LF或'\ n'字符。一些Cygwin工具能够处理任何一种格式,但sh通常不能。

它看起来像setup.sh使用Windows风格的行结尾 - 或至少行94。

我没有找到源代码的下载,但是如果它们是作为zip文件分发的,则可能需要使用带有-a选项的Cygwin unzip命令来提取它们,以便自动转换任何行结束符。

但我怀疑还有比这更多的东西。分布式文件setup.sh首先不应该有任何Windows风格的行结尾,如果是这样,我不知道为什么问题不会显示直到94行。

如果您可以发布源代码下载的URL,我会看看setup.exe

40

要转换到setup.sh在Cygwin Unix行结尾,使用

dos2unix setup.sh 
9

简单的方法来example.sh文件转换为UNIX是使用记事本++(编辑> EOL转换> UNIX/OSX格式)

您还可以设置在记事本默认EOL ++(设置>首选项>新建文档/默认目录>选择格式框下的Unix/OSX)

18

运行

sed -i 's/\r//' setup.sh

修复您的行结尾

相关问题