编译C程序时出错?

时间:2014-03-02 09:28:36

标签: c compiler-errors

经过数小时和数小时的程序工作,并消除了所有的语法错误,我遇到了这个错误,我不知道它是什么或为什么在那里。这是错误:

/tmp/ccKnig3z.o: In function `main':
line_formula_convert.c:(.text+0x113): undefined reference to `intcp_from_pt_slope'
collect2: error: ld returned 1 exit status


这是整个程序,如果它对你有任何帮助。 http://pastebin.com/9CNsaaF0
我正在使用Fedora 19和gcc -Wall来编译我的程序。任何解释此错误的帮助都表示赞赏,如果这是一个基本问题,我很抱歉。

3 个答案:

答案 0 :(得分:4)

好的,现在我们正在谈论你发布代码的链接后。

void incp_from_pt_slope(double x1, double y1, double m, double *b) ;
       |
void intcp_from_pt_slope(double x1, double y1, double m, double *b);

你看到了什么区别吗? incp_from_pt_slopeincp_from_pt_slope不同,这就是链接器抱怨未定义的引用错误的原因。

答案 1 :(得分:0)

  1. 使用#include作为声明
  2. 使用-l选项链接到库
  3. 阅读编译器的手册页

答案 2 :(得分:0)

您的代码中调用了一个名为intcp_from_pt_slope的函数,该函数未在任何位置定义。链接器发生错误。程序的每个模块都是单独编译的,您使用原型来声明可能存在于单独编译单元(.c文件)中的函数。然后,链接器获取所有目标文件并解析所有函数,以便每个函数都指向已经给出实现的内容。如果找不到函数的实现,则会收到报告的错误。这可能是因为您错过了链接器命令行中的对象,或者您只是错误地键入了该名称。

这可能是一个拼写错误,你需要在int和cp_from_pt_slope之间留一个空格。