我正在学习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。所有权限都已设置。我有可能忘记在某处包含某些内容吗?
答案 0 :(得分:3)
你需要编译它!
尝试使用man gcc
获取详细信息
答案 1 :(得分:1)
归因于第4行的错误是文件中早期问题的结果。
首先,有two forms of #include
statements,其中一个使用<
和>
来包含名称,另一个使用双引号。当要包含的文件位于工作目录而不是库目录中时,请使用双引号。
其次,像libmathsimple.a
这样的二进制文件是先前编译的,看起来像C编译器的垃圾。相反,当您关联.o文件时,请使用-l
选项提及libmathsimple.a
,可能与-lmathsimple
相似。