从终端编译C代码,返回致命错误?

时间:2013-12-08 16:54:43

标签: c linux compilation

我正在学习linux下的静态和共享库,我遇到了一个无法找到解决方案的问题。 所以,这是我的/文件夹ls:

  

user @ Project:〜/ 7.1 $ ls

     
    

历史main.coduzmi.c
    podijeli.o potenciraj.c zbroji.o libmathsimple.a main.o
    oduzmi.o pomnozi.c potenciraj.o libpotenciraj.so mathsimple.h     podijeli.c pomnozi.o zbroji.c

  

现在我在这一点上尝试编译我的main.c,如下所示:

#include <stdio.h>
#include <mathsimple.h>
int main(void)
{

  int a,b;
  printf("Unesi a:\n");
  scanf("%d",&a);
  printf("Unesi b:\n");
  scanf ("%d",&b);
  zbroji(a,b);
  oduzmi(a,b);

return 0;
}

当我这样做./main.c我得到:

./main.c: line 4: syntax error near unexpected token `('
./main.c: line 4: `int main(void)'

编辑: 我删除了mathsimple.h,我得到了相同的输出。修复了libmathsimple.a之前的错误,感谢您的建议。

P.S。所有权限都已设置。我有可能忘记在某处包含某些内容吗?

2 个答案:

答案 0 :(得分:3)

你需要编译它!

尝试使用man gcc获取详细信息

答案 1 :(得分:1)

归因于第4行的错误是文件中早期问题的结果。

首先,有two forms of #include statements,其中一个使用<>来包含名称,另一个使用双引号。当要包含的文件位于工作目录而不是库目录中时,请使用双引号。

其次,像libmathsimple.a这样的二进制文件是先前编译的,看起来像C编译器的垃圾。相反,当您关联.o文件时,请使用-l选项提及libmathsimple.a,可能与-lmathsimple相似。