在 CentOS 上编译 C++ 报错的原因有很多,下面我按最常见情况给你梳理一下,你可以对照看是哪一类。
CentOS 默认 不一定装 g++。
g++: command not found
sudo yum install -y gcc-c++
安装完后检查:
g++ --version
gcc 编译 C++ 文件gcc test.cpp
报错类似:
undefined reference to `std::cout`
gcc 默认按 C 语言处理。
用 g++:
g++ test.cpp -o test
fatal error: iostream: No such file or directory
系统缺少 C++ 标准库头文件。
sudo yum install -y gcc-c++ glibc-headers
auto x = 1;
报错:
error: ‘auto’ not allowed in C++98
CentOS 6/7 默认 g++ 比较老。
显式开启标准:
g++ -std=c++11 test.cpp
如果还不够新,可以安装 devtoolset:
sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-11
scl enable devtoolset-11 bash
undefined reference to `pthread_create`
手动加库:
g++ test.cpp -lpthread
常见库:
-lpthread-lm-ldlPermission denied
chmod +x a.out
或换到自己目录编译。
如果是 /tmp 或挂载盘:
mount | grep noexec
有 noexec 就不能执行。
which g++
g++ --version
g++ -std=c++11 test.cpp -o test
./test
如果你愿意,可以把 具体的报错信息贴出来(哪怕是截图文字),我可以直接帮你定位是哪一类问题。