所以我是新来的,遇到了这个问题
333.o: 333.c
gcc -c 333.c
clean: rm *.o hell
这是我要编译的文件
#!/bin/bash
echo "enetered number $1 threshold $2"
错误 c:1:2 无效的预处理指令 #! c:2:字符串常量前应有 '=', ',',';','asm' 或 '_attribute '
怎么了?想不通
谢谢你
所以我是新来的,遇到了这个问题
333.o: 333.c
gcc -c 333.c
clean: rm *.o hell
这是我要编译的文件
#!/bin/bash
echo "enetered number $1 threshold $2"
错误 c:1:2 无效的预处理指令 #! c:2:字符串常量前应有 '=', ',',';','asm' 或 '_attribute '
怎么了?想不通
谢谢你
您尝试编译的文件内容表明它是一个 shell 脚本而不是 ac 文件。但是,当make
看到文件有.c
扩展名时,它会尝试编译它,就好像它是 ac 文件一样,其内容显然不是。
在你继续之前,我建议你看看编译语言和解释语言之间的区别
bash是一种解释型语言——根本不需要编译器。只需授予文件执行权限并运行它。 bash
将逐行解析和解释文件并采取必要的措施
c是一种编译语言。在定义 ac 程序的源代码可以运行之前,必须对其进行编译。编译器解析 .c 文件并生成二进制目标文件,其中包含您的 CPU 直接理解的机器指令。
要运行您的 bash shell 脚本,我将执行以下操作:
mv 333.c 333.sh ; # rename to prevent any confusion
chmod +x 333.sh ; # give the bash script executable permissions
./333.sh 42 69 ; # run the script - give it some args, since your script references $1 and $2