在字符串之前预期asm

时间:2013-10-01 23:56:56

标签: bash compiler-construction makefile

所以我是新来的,我有这个问题 我有一个项目,我必须做一个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'或'_ 属性'

有什么不对?无法弄清楚

谢谢

1 个答案:

答案 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