所以我是新来的,我有这个问题 我有一个项目,我必须做一个makefile 我也有3个文件,但我们至少要拿一个 这是makefile
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'或'_ 属性'
有什么不对?无法弄清楚
谢谢
答案 0 :(得分:1)
您尝试编译的文件内容表明它是shell脚本而不是c文件。但是,当make
看到该文件具有.c
扩展名时,它会尝试编译它,就像它是一个c文件一样,其内容显然不是。
在你走得更远之前,我建议你看一下differences between compiled and interpreted languages
bash是一种解释型语言 - 根本不需要编译器。只需给文件执行权限并运行它。 bash
将逐行解析和解释文件并采取必要的操作
c是一种编译语言。在定义c程序的源可以运行之前,必须编译它。编译器解析.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