温馨提示×

ubuntu c++怎样部署程序

小樊
36
2026-09-17 13:43:54
栏目: 编程语言

在 Ubuntu 上部署 C++ 程序,通常分为编译构建、依赖处理、打包/发布、运行与开机自启几个步骤。下面按常见场景给你一个清晰流程。


一、基本部署流程(单机运行)

1. 编写并编译 C++ 程序

g++ main.cpp -o myapp

或使用 CMake(推荐):

mkdir build && cd build
cmake ..
make

生成可执行文件:

./myapp

2. 检查依赖库

查看程序依赖:

ldd myapp

如果依赖系统库(如 libstdc++libpthread),一般 Ubuntu 已自带。


3. 部署到目标机器

方式一:直接拷贝可执行文件

scp myapp user@ip:/opt/myapp/

在目标机运行:

chmod +x /opt/myapp/myapp
/opt/myapp/myapp

方式二:静态编译(避免依赖问题)

g++ main.cpp -static -o myapp

适合嵌入式 / 无网络环境


二、作为系统服务运行(推荐)

1. 创建 systemd 服务

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

示例:

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

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

[Install]
WantedBy=multi-user.target

2. 启动服务

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

查看状态:

systemctl status myapp

三、依赖第三方库时的部署

情况 1:系统可安装

sudo apt install libopencv-dev

情况 2:自己编译的库

.so 放到:

/usr/lib/
# 或
/opt/myapp/lib/

并配置:

export LD_LIBRARY_PATH=/opt/myapp/lib:$LD_LIBRARY_PATH

或写入:

/etc/ld.so.conf.d/myapp.conf

然后:

sudo ldconfig

四、打包部署(更规范)

1. 使用 dpkg 打包(Ubuntu 推荐)

目录结构:

myapp/
├── DEBIAN
│   └── control
├── opt
│   └── myapp
│       └── myapp

control 示例:

Package: myapp
Version: 1.0
Architecture: amd64
Maintainer: you@example.com
Description: My C++ App

打包:

dpkg-deb --build myapp

安装:

sudo dpkg -i myapp.deb

五、Docker 部署(适合服务器)

FROM ubuntu:22.04
COPY myapp /app/myapp
RUN chmod +x /app/myapp
CMD ["/app/myapp"]

构建运行:

docker build -t myapp .
docker run -d myapp

六、常见问题

1. 运行时找不到库

error while loading shared libraries

✅ 用 ldd 查,补 .so

2. 权限问题

sudo chmod +x myapp

3. GLIBC 版本不兼容

✅ 在目标 Ubuntu 版本上编译


七、总结推荐方案

场景 推荐方式
学习 / 测试 直接运行
服务器 systemd
多机部署 deb 包
云 / 容器 Docker
无依赖环境 静态编译

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

  • 命令行程序还是 GUI
  • 是否使用 CMake / 第三方库
  • 部署到 本地 / 服务器 / 容器

我可以给你一套完全定制的部署方案

0