我开始进入c编程,并在cs50平台上进行了一系列讲座,由于我的互联网出现了一些问题,我决定下载这个库以便我可以在离线时下载问题集时有意义,下载后该库,并包含在项目中make命令不会在所有的工作给我这个输出cc(文件名).c -l(库的名称)-o(输出文件名)做什么以及为什么make make does not work?
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 - 开发/ src目录/ cs50.h”,有人告诉我运行“cc main.c -lcs50 -o main”而不是“make”会解决这个问题,这个建议确实起作用,但我无法再与这个人联系来找出原因。有人可以向我解释发生了什么吗?
您的'get_string'函数可能在cs50.h中声明为*,但它不是* defined *,否则您不会遇到您描述的错误。也就是说,头文件不包含函数的实现,无论是源代码还是二进制形式。显然,一个实现被包含在一个名为libcs50的库中,您的系统知道; '-lcs50'编译参数说从那里获得实现。标题名称与库名称之间的关系仅仅是约定,绝不是通用的。 –