温馨提示×

怎样在CentOS部署C++项目

小樊
39
2026-08-04 00:41:47
栏目: 编程语言

CentOS 上部署 C++ 项目,通常分为 开发环境准备 → 编译 → 部署运行 → 可选服务化 几个阶段。下面给你一套通用、实战型流程,适用于大多数 C++ 项目(含 Makefile / CMake)。


一、准备 CentOS 环境

1️⃣ 更新系统

sudo yum update -y

2️⃣ 安装基础开发工具

sudo yum groupinstall "Development Tools" -y

包含:

  • gcc
  • g++
  • make
  • autoconf
  • automake

3️⃣ 安装常用依赖

sudo yum install -y \
    cmake \
    git \
    wget \
    curl \
    vim

二、确认编译器版本(很重要)

gcc --version
g++ --version

如果项目需要 C++17 / C++20,建议:

  • CentOS 7 → 升级 gcc
  • CentOS 8 / Stream → 默认支持较好

CentOS 7 升级 gcc(示例)

sudo yum install centos-release-scl -y
sudo yum install devtoolset-11 -y
scl enable devtoolset-11 bash

三、上传或拉取 C++ 项目

方式一:Git 拉取

git clone https://github.com/your/project.git
cd project

方式二:上传压缩包

scp project.tar.gz user@ip:/home/user/
tar -zxvf project.tar.gz

四、编译 C++ 项目

✅ 情况 1:使用 CMake(最常见)

mkdir build
cd build
cmake ..
make -j$(nproc)

如果项目需要指定 gcc:

cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..

✅ 情况 2:使用 Makefile

make

或指定线程数:

make -j4

✅ 情况 3:直接 g++ 编译

g++ main.cpp utils.cpp -o app -std=c++17 -O2

五、部署运行

1️⃣ 创建部署目录

sudo mkdir -p /opt/myapp
sudo cp app /opt/myapp/

2️⃣ 运行程序

cd /opt/myapp
./app

3️⃣ 后台运行(推荐)

nohup ./app > app.log 2>&1 &

查看进程:

ps -ef | grep app

六、依赖库处理(非常重要)

查看依赖

ldd app

如果缺少动态库:

sudo yum install xxx

或:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

七、把 C++ 程序做成系统服务(生产环境推荐)

1️⃣ 创建 systemd 服务

sudo vim /etc/systemd/system/myapp.service

内容示例:

[Unit]
Description=My C++ App
After=network.target

[Service]
ExecStart=/opt/myapp/app
WorkingDirectory=/opt/myapp
Restart=always
User=root

[Install]
WantedBy=multi-user.target

2️⃣ 启动服务

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp

3️⃣ 查看状态

systemctl status myapp

八、常见 CentOS 部署问题

❌ 1. 编译报错:GLIBCXX_3.4.x not found

原因:gcc 版本过低
✅ 解决:升级 gcc 或使用静态链接


❌ 2. 编译成功但运行报错:cannot open shared object

✅ 解决:

ldconfig

或调整 LD_LIBRARY_PATH


❌ 3. CentOS 7 软件太旧

✅ 建议使用:

  • CentOS 8 Stream
  • Rocky Linux
  • AlmaLinux

九、建议的目录结构(生产)

/opt/myapp/
├── bin/
│   └── app
├── conf/
├── log/
└── run/

十、我可以继续帮你做的事 ✅

如果你愿意,可以直接告诉我:

  1. ✅ CentOS 版本(7 / 8 / Stream)
  2. ✅ 是否使用 CMake / Makefile
  3. ✅ 是否依赖 第三方库(如 OpenSSL、Boost、Redis)
  4. ✅ 是否是 Web / 后台服务 / 算法程序

我可以给你 完全针对你项目的部署方案(包括自动部署脚本)。

0