编译C++程序时遇libc.so.6未定义引用错误求助
解决Anaconda g++与系统GLIBC冲突导致的编译错误
你遇到的错误是因为当前使用的是Anaconda环境中的g++工具链,它的链接器(ld)和系统自带的GLIBC库版本不兼容,导致出现GLIBC_PRIVATE相关的未定义引用。
解决方案
1. 确认当前g++来源
先执行以下命令查看当前使用的g++路径:
which g++
如果输出是/home/shikhar/anaconda3/bin/g++,说明确实是Anaconda的工具链在起作用。
2. 临时切换到系统工具链
- 如果当前激活了Anaconda环境,先执行:
重复执行直到回到系统默认环境,然后再重新编译:conda deactivateg++ first.cpp - 如果还是不行,直接关闭终端重新打开,此时环境变量会重置,系统自带的g++会被优先调用。
3. 直接使用系统g++的绝对路径编译
不想切换环境的话,直接用系统g++的绝对路径编译:
/usr/bin/g++ first.cpp
编译完成后运行生成的可执行文件:
./a.out
应该会输出Hello world!。
4. 永久调整环境变量(可选)
如果希望默认使用系统的g++,可以修改shell配置文件:
- 打开你的shell配置文件(bash用户编辑
~/.bashrc,zsh用户编辑~/.zshrc) - 找到类似下面的行:
export PATH="/home/shikhar/anaconda3/bin:$PATH" - 将其修改为把系统
/usr/bin放在前面:export PATH="/usr/bin:$PATH:/home/shikhar/anaconda3/bin" - 保存文件后,执行以下命令使修改生效:
source ~/.bashrc
之后每次打开终端,系统的g++都会被优先使用。
内容的提问来源于stack exchange,提问作者Shikhar
相关产品推荐
相关产品推荐

