cc(文件名).c -l(库的名称)-o(输出文件名)做什么以及为什么make make时不起作用?

时间:2017-10-08 20:44:38

标签: c import include cs50

我开始进入c编程,并在cs50平台上进行了一系列讲座,由于我的互联网的一些问题,我认为下载库是有意义的,这样我可以在离线时处理问题集,之后下载库并将其包含在项目中make命令根本不起作用给我这个输出

  

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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