一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

CentOS上C++程序如何部署

时间:2026-08-04 15:04:01 编辑:袖梨 来源:一聚教程网

1. 准备编译环境在CentOS上部署C++程序前,需安装必要的编译工具和基础依赖库。运行以下命令安装GCC/G++编译器、CMake构建工具及开发工具集:

CentOS上C++程序如何部署

sudo yum update -y# 更新系统包sudo yum groupinstall -y "Development Tools"# 安装编译工具链(gcc、g++、make等)sudo yum install -y cmake # 安装CMake(跨平台构建工具)

若需使用较新版本的GCC(如10),可通过Software Collections(SCL)安装:

sudo yum install -y centos-release-sclsudo yum install -y devtoolset-10-gcc-c++scl enable devtoolset-10 bash # 启用新版本GCC(临时生效)

2. 编译C++程序根据项目复杂度选择编译方式:

  1. 简单程序(单文件):直接使用G++编译为可执行文件。例如,将main.cpp编译为myapp
    g++ -o myapp main.cpp # 默认静态编译(无外部依赖时可直接运行)
  2. 复杂项目(多文件/依赖库):使用CMake管理构建流程。
    1. 在项目根目录创建CMakeLists.txt文件,定义项目名称、可执行文件及依赖库。例如:
      cmake_minimum_required(VERSION 3.10)project(MyApp)add_executable(MyApp main.cpp lib.cpp)# 添加源文件find_package(OpenSSL REQUIRED)# 查找OpenSSL库target_link_libraries(MyApp PRIVATE OpenSSL::SSL OpenSSL::Crypto)# 链接库
    2. 创建构建目录并生成Makefile:
      mkdir build && cd buildcmake ..# 生成构建系统make# 编译项目(生成可执行文件)

3. 处理依赖库C++程序的依赖库分为系统库(如glibc)和第三方库(如BoostOpenSSL),需确保服务器上已安装所需依赖:

  1. 安装系统依赖库:使用yum安装常见库的开发包(-devel后缀)。例如,安装OpenSSL开发库:
    sudo yum install -y openssl-devel
  2. 安装第三方依赖库:
    1. 包管理器:通过yum安装(如boost-devel);
    2. CMake:通过find_package自动查找(需库支持CMake);
    3. vcpkg:微软的C++库管理器,支持跨平台依赖管理(需提前安装并集成到CMake);
    4. 手动编译:下载库源码,编译后安装到系统目录(如/usr/local/lib)。
  3. 验证依赖:使用ldd命令检查可执行文件的动态库依赖,确保无缺失。例如:
    ldd myapp
    若输出显示“not found”,需安装对应库或设置LD_LIBRARY_PATH环境变量(临时生效):
    export LD_LIBRARY_PATH=/path/to/libs:$LD_LIBRARY_PATH

4. 部署到服务器将编译好的可执行文件传输到CentOS服务器,可使用scp(命令行)或WinSCP(图形化工具)。例如,将本地的myapp传输到服务器的/opt/myapp目录:

scp myapp user@server_ip:/opt/myapp# 替换user为服务器用户名,server_ip为服务器IP

传输完成后,登录服务器,为可执行文件设置运行权限:

ssh user@server_ipcd /opt/myappchmod +x myapp # 赋予执行权限

5. 运行程序

  1. 直接运行:在终端执行可执行文件(需在程序所在目录或指定完整路径):
    ./myapp # 当前目录运行/opt/myapp/myapp# 绝对路径运行
  2. 处理依赖路径:若程序依赖非系统目录的库,需通过LD_LIBRARY_PATH指定路径:
    export LD_LIBRARY_PATH=/opt/myapp/libs:$LD_LIBRARY_PATH./myapp
    若需永久生效,可将上述命令添加到~/.bashrc/etc/profile文件中。

6. 配置systemd服务(可选,推荐用于生产环境)为确保程序在服务器重启后自动启动,可创建systemd服务单元文件:

  1. 创建服务文件(如/etc/systemd/system/myapp.service):
    sudo nano /etc/systemd/system/myapp.service
  2. 添加以下内容(替换路径和用户):
    [Unit]Description=My C++ ApplicationAfter=network.target# 在网络服务启动后运行[Service]User=myuser # 运行程序的用户(避免使用root)Group=mygroup # 运行程序的组ExecStart=/opt/myapp/myapp# 可执行文件路径Restart=always# 程序崩溃后自动重启Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"# 环境变量[Install]WantedBy=multi-user.target# 开机自启的目标
  3. 重载systemd配置并启动服务:
    sudo systemctl daemon-reload# 重载配置sudo systemctl start myapp # 启动服务sudo systemctl enable myapp# 设置开机自启
  4. 查看服务状态(确认运行正常):
    sudo systemctl status myapp

7. 安全与维护建议

  1. 安全加固:关闭服务器不必要的端口,使用防火墙(如firewalld)限制访问;避免以root用户运行程序,使用普通用户+sudo提升权限。
  2. 日志管理:将程序输出重定向到日志文件(如./myapp > myapp.log 2>&1 &),便于排查问题;或使用journalctl查看systemd服务日志(journalctl -u myapp)。
  3. 备份与更新:定期备份程序代码和数据;监控程序运行状态(如使用tophtop查看资源占用),及时更新依赖库以修复安全漏洞。

热门栏目