在 Ubuntu 上部署 C++ 应用,通常有几种常见方式,取决于你是命令行程序、后台服务,还是带界面的程序。下面按“从简单到规范”的方式讲。
sudo apt update
sudo apt install g++ cmake build-essential
g++ main.cpp -o myapp
./myapp
适合:
g++ main.cpp -o myapp
sudo cp myapp /usr/local/bin/
myapp
适合:
myapp/
├── CMakeLists.txt
├── main.cpp
cmake_minimum_required(VERSION 3.10)
project(myapp)
add_executable(myapp main.cpp)
install(TARGETS myapp DESTINATION bin)
mkdir build && cd build
cmake ..
make
sudo make install
可执行文件会安装到:
/usr/local/bin/myapp
适合 服务器程序 / 守护进程
sudo cp myapp /opt/myapp/
sudo vim /etc/systemd/system/myapp.service
内容:
[Unit]
Description=My C++ App
After=network.target
[Service]
ExecStart=/opt/myapp/myapp
Restart=always
User=root
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
查看状态:
systemctl status myapp
适合 分发给他人 / 生产环境
sudo apt install dpkg-dev
目录结构:
myapp/
├── DEBIAN/control
├── usr/local/bin/myapp
control 示例:
Package: myapp
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: you@example.com
Description: My C++ application
打包:
dpkg-deb --build myapp
安装:
sudo dpkg -i myapp.deb
适合:
示例 Dockerfile:
FROM ubuntu:22.04
RUN apt update && apt install -y g++
COPY main.cpp /app/main.cpp
RUN g++ /app/main.cpp -o /app/myapp
CMD ["/app/myapp"]
✅ 动态库依赖
ldd myapp
✅ 静态编译(减少依赖)
g++ main.cpp -static -o myapp
✅ 权限
chmod +x myapp
| 场景 | 推荐方式 |
|---|---|
| 自己用 | 直接运行 |
| 内部工具 | /usr/local/bin |
| 后台服务 | systemd |
| 分发软件 | .deb |
| 生产/云 | Docker |
如果你愿意,可以告诉我:
我可以给你一个完全适合你项目的部署方案。