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
相关产品推荐
相关产品推荐

