在 CentOS 上部署 C++ 项目,通常分为几个步骤:环境准备、编译、部署运行、以及可选的服务化/自动化。下面给你一个通用、实战型流程,适合大多数场景(可执行程序 / 后台服务 / 与第三方库结合)。
sudo yum update -y
sudo yum install -y gcc gcc-c++
检查版本:
g++ --version
CentOS 7 默认 gcc 4.8,若需要新版本(推荐 C++17+):
sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-11
scl enable devtoolset-11 bash
scp -r ./myproject user@ip:/home/user/
sudo yum install -y git
git clone https://github.com/your/project.git
cd project
g++ main.cpp -o app
g++ main.cpp utils.cpp -I./include -o app
make
sudo yum install -y cmake
mkdir build && cd build
cmake ..
make -j$(nproc)
./app
后台运行:
nohup ./app > app.log 2>&1 &
查看进程:
ps -ef | grep app
如果运行时报错:
error while loading shared libraries: libxxx.so
解决方式:
sudo yum install -y libxxx
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
或写入:
echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
sudo vim /etc/systemd/system/mycpp.service
内容示例:
[Unit]
Description=My C++ Service
After=network.target
[Service]
ExecStart=/home/user/project/app
WorkingDirectory=/home/user/project
Restart=always
User=user
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start mycpp
sudo systemctl enable mycpp
查看状态:
sudo systemctl status mycpp
libevent / asio / brpcsudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
cron 定时执行crontab -e
0 2 * * * /home/user/project/app
/opt/mycpp/
├── bin/
│ └── app
├── conf/
├── log/
├── lib/
└── run/
| 问题 | 解决 |
|---|---|
| 编译报错 | 查看 GCC 版本、C++ 标准 |
| 找不到头文件 | -I 指定 include |
| so 找不到 | ldd app 查看依赖 |
| 运行闪退 | gdb app 调试 |
| 中文乱码 | 设置 LANG=zh_CN.UTF-8 |
✅ 使用 Docker 部署 C++
✅ 使用 CMake + Conan / vcpkg 管理依赖
✅ 使用 CI/CD 自动编译部署
如果你愿意,我可以:
直接把你的 项目结构 / 报错信息 发我即可。