cc(文件名).C语言 l(库名称)-o(输出文件名)有什么作用,为什么当 make 不起作用时它可以工作?



我开始学习 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是在"libcs50-develop/src/cs50.h"#include 上定义的,有人告诉我运行"cc main.c -lcs50 -o main"而不是"make"可以解决问题,这个建议确实有效,但我无法再次联系这个人来找出原因。 有人可以向我解释发生了什么吗?

您的调用正在执行两个步骤,编译和链接。

您收到的错误来自链接器试图绑定标头 cs50.h 中声明的符号时的链接步骤

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

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

这通常在进一步切换到链接器以告知链接器库所在的位置时指示。

对于 gcc 编译器,一个指示使用 -L 开关搜索库的目录。(请参阅选项)

最新更新