【发布时间】:2017-10-11 02:12:47
【问题描述】:
我开始接触 c 编程,并在 cs50 平台上进行了一系列讲座,由于我的互联网存在一些问题,我认为下载库是有意义的,这样我就可以在离线时处理问题集,之后下载库并将其包含在项目中,make 命令根本不起作用,给我这个输出
cc main.c -o main /tmp/ccz5QZev.o:在函数
main': main.c:(.text+0x18): undefined reference toget_string'collect2中: 错误:ld 返回 1 退出状态:目标“主”的配方 制作失败:*** [main] 错误 1
get_string 是在#include "libcs50-develop/src/cs50.h" 上定义的,有人告诉我运行 "cc main.c -lcs50 -o main" 而不是 "make" 可以解决问题,建议确实有效,但我无法再次联系该人以找出原因。有人可以向我解释发生了什么吗?
【问题讨论】:
-
您的
get_string函数可能在 cs50.h 中声明,但它没有在此处定义,否则您不会遇到错误描述。也就是说,标头不包含函数的实现,无论是源代码还是二进制形式。显然,您的系统知道一个名为 libcs50 的库中包含一个实现;-lcs50编译器参数表示从那里获取实现。头文件名和库名的关系只是约定俗成的,绝非通用的。