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

Ubuntu 17.10安装build-essential及编译C代码报错求助

解决Ubuntu 17.10下C编译与make工具的系列问题

刚看完你遇到的这些编译问题,都是Ubuntu下做C开发尤其是CSAPP实验时常见的坑,我来一步步给你理清楚解决办法:

一、搞定make命令未安装与Hash Sum mismatch错误

当你执行make world提示命令不存在时,安装build-essential是完全正确的选择——这个包打包了make、gcc、g等基础编译工具,是C/C开发的必备套件。但你遇到的Hash Sum mismatch错误,大多是本地源缓存损坏或者网络同步不稳定导致的,按下面的步骤就能解决:

  • 先清理本地的软件包缓存:
    sudo apt clean
    
  • 重新拉取最新的源索引信息:
    sudo apt update
    
  • 再次尝试安装build-essential:
    sudo apt-get install build-essential
    

如果还是报错,就像你后来做的那样,换成国内的镜像源(比如阿里云、清华源),这类源的网络稳定性更好,能大幅减少校验错误的概率。

二、解决bits/libc-header-start.h: No such file or directory致命错误

首先得提一句:你写的world.c本身有语法错误——printf(hello!);里的字符串没加双引号,标准写法应该是printf("hello!");,而且main函数的标准返回类型是int不是void。修正后的代码应该是这样:

#include <stdio.h>
int main() { 
    printf("hello!\n"); 
    return 0; 
}

不过即使修正了语法,出现这个头文件缺失错误,核心原因是64位Ubuntu默认只安装64位的编译组件,如果你的代码需要编译成32位程序(或者依赖32位头文件),就会找不到对应的头文件。解决办法就是安装多架构支持库:

sudo apt-get install gcc-multilib

这个包会自动安装32位的C标准库头文件和相关组件,直接解决这类跨架构编译的头文件缺失问题。

三、CSAPP DataLab程序的编译问题

你换源后DataLab的程序仍报错,本质和上面的问题是同一个:DataLab里的实验代码很多是针对32位环境设计的,64位系统默认没有对应的编译支持。安装gcc-multilib后,就能正常编译32位的实验程序了,这也是你最终解决问题的关键步骤。

内容的提问来源于stack exchange,提问作者J.Butter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:47:58