在 Ubuntu 下使用 gcc 时,“兼容问题”通常出现在以下几类场景。我按常见情况 + 解决办法给你一个实用清单,你可以对号入座。
sudo apt update
sudo apt install gcc-9 g++-9 gcc-11 g++-11
查看已安装版本:
ls /usr/bin/gcc*
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110
sudo update-alternatives --config gcc
gcc-9 main.c -o main
error: ‘for’ loop initial declarations are only allowed in C99显式指定标准:
gcc -std=c99 main.c
g++ -std=c++11 main.cpp
g++ -std=c++17 main.cpp
CMake 示例:
set(CMAKE_CXX_STANDARD 17)
version 'GLIBC_2.34' not foundgcc -static main.c -o main
docker run -it ubuntu:18.04
避免:
realpath, getrandom, explicit_bzero
cannot execute binary fileNo such file or directory(其实是 32 位)安装 32 位支持:
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install gcc-multilib g++-multilib
编译 32 位:
gcc -m32 main.c -o main
undefined referencesudo apt install libxxx-dev
指定库路径:
gcc main.c -I/usr/local/include -L/usr/local/lib -lxxx
查看依赖:
ldd a.out
undefined reference to 'std::string' 类似问题✅ 用 Docker 固定环境
✅ 用 CMake 管理编译
✅ 不在系统全局乱改 gcc
✅ 老项目用老 gcc
我可以直接帮你定位并给出精确命令。