我开始接触 c 编程,并在 cs50 平台上参加了一系列讲座,由于我的互联网出现一些问题,我决定下载该库是有意义的,这样我就可以在离线时处理问题集,之后下载库并将其包含在项目中 make 命令根本不起作用,给我这个输出
cc main.c -o main /tmp/ccz5QZev.o: In function
main': main.c:(.text+0x18): undefined reference to
get_string' collect2: error: ld returned 1 exit status : recipe for target 'main' failed make: *** [main] Error 1
get_string 是在#include“libcs50-develop/src/cs50.h”上定义的,有人告诉我运行“cc main.c -lcs50 -o main”而不是“make”可以解决问题,建议确实有效,但我无法再次联系该人以找出原因。有人可以向我解释发生了什么吗?
最佳答案
您的调用执行两个步骤:编译和链接。
您收到的错误来自链接器尝试绑定(bind) header cs50.h 中声明的符号时的链接步骤
必须有一个库文件也需要包含在编译中。
这似乎是您收到的建议,我同意。问题可能是链接器需要知道库“cs50”位于路径中的位置。
这通常是在进一步切换到链接器时指示的,以告诉链接器库所在的位置。
对于 gcc 编译器,使用 -L 开关指示搜索库的目录。 (see options)
关于c - cc(文件名).c -l(库名)-o(输出文件名)有什么作用?为什么它可以工作,而 make 却不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46635878/