在 Ubuntu 上用 C++ 打包发布,常见有几种方式,取决于你是给自己用、给团队用,还是公开发布。下面按常见场景给你一个清晰路线。
g++ main.cpp -o myapp
查看依赖库:
ldd myapp
如果依赖 libstdc++、libc 等系统库,一般目标机器有即可。
直接拷贝:
scp myapp user@remote:/opt/myapp/
⚠️ 注意:
.so.deb(Ubuntu 官方方式)适合正式发布、安装卸载方便
myapp/
├── DEBIAN
│ └── control
├── usr
│ ├── bin
│ │ └── myapp
│ └── share
│ └── doc
│ └── myapp
Package: myapp
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: you <you@mail.com>
Description: My C++ application
dpkg-deb --build myapp
生成:
myapp.deb
sudo dpkg -i myapp.deb
适合单文件发布
g++ main.cpp -static -o myapp
✅ 优点:
❌ 缺点:
cmake_minimum_required(VERSION 3.10)
project(myapp)
add_executable(myapp main.cpp)
install(TARGETS myapp DESTINATION bin)
set(CPACK_GENERATOR "DEB")
set(CPACK_PACKAGE_NAME "myapp")
set(CPACK_PACKAGE_VERSION "1.0")
include(CPack)
mkdir build && cd build
cmake ..
make
cpack
生成 .deb
适合不想管依赖
linuxdeploy --appdir AppDir --output appimage
生成:
myapp-x86_64.AppImage
✅ 双击运行
❌ 文件偏大
FROM ubuntu:22.04
COPY myapp /usr/bin/myapp
CMD ["myapp"]
docker build -t myapp .
| 场景 | 推荐方式 |
|---|---|
| 自己/内网 | 可执行文件 |
| Ubuntu 用户 | .deb |
| 跨版本 | AppImage |
| 服务器 | Docker |
| 工程化 | CMake + CPack |
如果你愿意,可以告诉我:
我可以直接给你一套可复制的打包模板。