我开始学习c编程,并在cs50平台上进行了一系列讲座,由于我的互联网存在一些问题,我决定下载该库是有意义的,因此在下载库后,我可以离线处理问题集并将其包含在项目中,make命令根本无法工作,这给了我输出


  cc main.c -o main /tmp/ccz5QZev.o:在函数main': main.c:(.text+0x18): undefined reference to get_string'collect2中:
  错误:ld返回1退出状态:目标“主”的配方
  制作失败:*** [主要]错误1


get_string是在#include“ libcs​​50-develop / src / cs50.h”上定义的,有人告诉我,运行“ cc main.c -lcs50 -o main”而不是“ make”可以解决问题,建议确实有效,但我无法再次与该人联系以查明原因。有人可以向我解释发生了什么吗?

最佳答案

您的发票正在执行两个步骤,即编译和链接。

当链接器试图绑定标头cs50.h中声明的符号时,您从链接步骤中得到的错误是

必须有一个库文件,该文件也需要包含在编译中。

这似乎是您收到的建议,我同意。问题可能是链接器需要知道库“ cs50”在路径中的位置。

通常在到链接器的另一开关中指示链接器,以告知链接器库在何处。

对于gcc编译器,使用-L开关指示要搜索库的目录。 (see options)

07-26 09:35
查看更多