You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL1 Ubuntu下Make编译C代码时CS50库函数引用缺失求助

解决WSL下make编译CS50库缺失链接的问题

问题核心是你用的默认Makefile没给编译命令加上CS50库的链接参数-lcs50,手动gcc命令加了该参数所以编译正常,给你两种解决办法:

方法1:修改Makefile

直接调整Makefile里的编译命令,补上链接参数:
把原来的:

cc     test.c   -o test

改成:

cc test.c -o test -lcs50

要是想让Makefile更规范、方便后续扩展,也可以用变量管理编译参数:

# 指定编译器
CC = gcc
# 可选编译选项:添加警告提示,提前发现代码问题
CFLAGS = -Wall -Wextra
# 链接选项:指定要链接的CS50库
LDFLAGS = -lcs50

# 编译目标规则
test: test.c
	$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)

方法2:设置全局环境变量(一劳永逸)

如果不想每次写Makefile都手动加参数,可以把链接选项加入环境变量,让make的默认编译规则自动调用:

  1. 打开终端,编辑~/.bashrc配置文件:
    nano ~/.bashrc
    
  2. 在文件末尾添加一行:
    export LDFLAGS="-lcs50"
    
  3. 保存退出后,让配置立即生效:
    source ~/.bashrc
    

之后再执行make test,编译命令会自动带上-lcs50参数,就能正常通过了。

补充说明:get_string是CS50库提供的函数,编译时必须告诉链接器去查找这个库的实现代码,-lcs50就是用来指定链接CS50库的参数,默认的make规则没包含这个参数,所以会报“未定义引用”的错误。

内容的提问来源于stack exchange,提问作者Captain Nemo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:42:05