在 Ubuntu 上部署 C++ 程序,通常分为编译构建、依赖处理、打包/发布、运行与开机自启几个步骤。下面按常见场景给你一个清晰流程。
g++ main.cpp -o myapp
或使用 CMake(推荐):
mkdir build && cd build
cmake ..
make
生成可执行文件:
./myapp
查看程序依赖:
ldd myapp
如果依赖系统库(如 libstdc++、libpthread),一般 Ubuntu 已自带。
scp myapp user@ip:/opt/myapp/
在目标机运行:
chmod +x /opt/myapp/myapp
/opt/myapp/myapp
g++ main.cpp -static -o myapp
适合嵌入式 / 无网络环境
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
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
查看状态:
systemctl status myapp
sudo apt install libopencv-dev
把 .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
目录结构:
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
FROM ubuntu:22.04
COPY myapp /app/myapp
RUN chmod +x /app/myapp
CMD ["/app/myapp"]
构建运行:
docker build -t myapp .
docker run -d myapp
error while loading shared libraries
✅ 用 ldd 查,补 .so
sudo chmod +x myapp
✅ 在目标 Ubuntu 版本上编译
| 场景 | 推荐方式 |
|---|---|
| 学习 / 测试 | 直接运行 |
| 服务器 | systemd |
| 多机部署 | deb 包 |
| 云 / 容器 | Docker |
| 无依赖环境 | 静态编译 |
如果你愿意,可以告诉我:
我可以给你一套完全定制的部署方案。