编译文件时出错| collect2:错误:ld返回1退出状态

时间:2016-02-18 22:26:48

标签: c linux gcc makefile

我遇到了很多问题,似乎无法理解发生了什么。我正在尝试从Learn C The Hard Way学习C,我正在尝试编译first exercise。什么时候我跑,我得到一个巨大的问题

cc     ex1.c   -o ex1

ex1.c: In function ‘main’:

ex1.c:3:5: warning: implicit declaration of function ‘put’ [-Wimplicit-function-declaration]

     put("Hello world.");
     ^

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/5.3.1/../../../libc.so when searching for -lc

/usr/bin/ld: skipping incompatible /lib/libc.so when searching for -lc

/usr/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc

/usr/bin/ld: cannot find -lc

collect2: error: ld returned 1 exit status

<builtin>: recipe for target 'ex1' failed


make: *** [ex1] Error 1

任何帮助都会很精彩

1 个答案:

答案 0 :(得分:0)

第一个错误是明确的;没有声明<div class="down-arrow"> <button class="down-button animate-flicker" type="button">VVV</button> </div>的函数。这是因为

  • 您错误输入了函数名称
  • 或者因为您未能通过包含声明的头文件直接提供声明。

在这种情况下,如果您尝试编译的代码来自this exercise,那么请再次查看它 - 它明显不同于您的代码(即上面列出的第一种可能性)。然而即便如此,你也会得到同样的错误;在练习中进一步阅读,您将看到作者故意省略了头文件,以说明是否需要特定的库头文件。您在没有建议的put()命令行选项的情况下收到警告的原因可能是因为您使用的是比编写者更新的编译器版本。老实说,从我所看到的那些小小的东西&#34;学习艰难的方式&#34;,我会避开它。

第二个问题是您的某个链接器无法找到要链接到您的代码的标准C库的适当版本。在Linux中编译C代码通常很简单;大多数发行版都带有GCC已经正确安装和工作;你好像被打破了。您可能需要修复工具链安装。您可能安装了多个不兼容的工具链。