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

Ubuntu 16.04 LTS下用g++编译C++代码提示cannot find crtn.o报错求助

解决Ubuntu 16.04 LTS中g++编译时找不到crtn.o的问题

嘿,我之前也碰到过一模一样的问题!这大概率是系统里的C标准库组件缺失、损坏,或者gcc的路径配置出了问题,给你几个实测有效的解决办法,按顺序试试看:

  • 重新安装gcc和C标准库开发包
    crtn.o是GNU C库(glibc)的核心组件之一,最常见的原因就是这个组件没装全或者损坏了。直接在终端跑这两条命令修复:

    sudo apt-get update
    sudo apt-get install --reinstall libc6-dev gcc
    

    第一条命令先更新软件源列表,第二条重新安装libc6-dev(包含crtn.o这类编译必需的目标文件)和gcc本身,能直接补全缺失的文件。

  • 确认库路径并手动配置
    如果重装后还是不行,那可能是gcc没找到正确的库路径。先手动定位crtn.o的位置:

    find /usr/lib -name crtn.o
    

    正常情况下会输出类似/usr/lib/x86_64-linux-gnu/crtn.o的路径。接着检查gcc的搜索路径:

    gcc -print-search-dirs
    

    看看输出里的libraries部分有没有包含crtn.o所在的目录。如果没有,临时添加环境变量试试:

    export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH
    

    之后再尝试编译你的代码g++ ak.cpp,如果成功了,把上面的export命令加到~/.bashrc文件末尾,就能永久生效了。

  • 检查系统架构与库版本匹配
    要是你用的是32位系统,或者误装了不匹配的64位库,也会出现这个错误。先确认系统架构:

    uname -m
    

    如果输出是x86_64(64位),确保装的是对应版本的库;如果是i386(32位),安装32位的开发包:

    sudo apt-get install libc6-dev-i386
    

按这个流程走下来,基本就能解决编译时找不到crtn.o的问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:41:18