gcc编译器的{c shell脚本

时间:2018-04-14 09:32:00

标签: c windows shell gcc windows-subsystem-for-linux

我想制作一个测试我的c程序的脚本,但我无法弄清楚它为什么不起作用 我用一个简单的代码测试它,以便我确定问题不是因为C文件。

我的C代码是:

#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("Hello World\n");
return 0;
}

我的Shell脚本是:

gcc -o main main.c
echo "Hello world"

如果我执行脚本,我会在控制台上收到错误消息

: No such file or directory
gcc: fatal error: no input files
compilation terminated 

如果我想执行脚本

,这是我得到的错误

https://imgur.com/a/zIl55

在图片中,您可以看到我的问题 如果我“按手”编译C文件它没有问题,但如果我执行包含相同语句的脚本则不起作用。
如果我只想编译并且只在我的脚本中编写用于编译的命令,那么它可以正常工作,但是只要我使用echo或任何其他命令,它就无法工作。

我在Windows下使用Ubuntu Shell。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我的猜测:您使用仅限Windows的编辑器(如记事本)编写了脚本,因此它使用了Windows换行符(\r\n AKA CRLF)。 bashmain.c\r作为参数传递给gcc,后者无法找到它。打印出错误,终端将\r解释为回车字符,因此,它会进入第1列并打印出其余的消息,这会导致您看到的奇怪事物。

您可以通过在脚本上运行dos2unix来检查是否是这种情况,如果现在它正常工作就像我怀疑的那样。

解决方案:使用更严肃的编辑器和/或确保编写Unix换行符(普通\n,AKA LF)。