温馨提示×

ubuntu c++怎样打包发布

小樊
46
2026-09-29 12:38:46
栏目: 编程语言

在 Ubuntu 上用 C++ 打包发布,常见有几种方式,取决于你是给自己用、给团队用,还是公开发布。下面按常见场景给你一个清晰路线。


一、最基础:直接发布可执行文件

1. 编译

g++ main.cpp -o myapp

2. 确保依赖

查看依赖库:

ldd myapp

如果依赖 libstdc++、libc 等系统库,一般目标机器有即可。

3. 发布

直接拷贝:

scp myapp user@remote:/opt/myapp/

⚠️ 注意:

  • 目标系统 Ubuntu 版本尽量一致
  • 避免依赖本机独有的 .so

二、推荐:打包成 .deb(Ubuntu 官方方式)

适合正式发布、安装卸载方便

1. 准备目录结构

myapp/
├── DEBIAN
│   └── control
├── usr
│   ├── bin
│   │   └── myapp
│   └── share
│       └── doc
│           └── myapp

2. 写 control 文件

Package: myapp
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: you <you@mail.com>
Description: My C++ application

3. 打包

dpkg-deb --build myapp

生成:

myapp.deb

4. 安装

sudo dpkg -i myapp.deb

三、静态编译(免依赖)

适合单文件发布

g++ main.cpp -static -o myapp

✅ 优点:

  • 不依赖系统库
  • 拷贝即用

❌ 缺点:

  • 文件大
  • 某些库不支持静态

四、用 CMake + CPack(工程化)

CMakeLists.txt

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


五、AppImage(跨 Ubuntu 版本)

适合不想管依赖

linuxdeploy --appdir AppDir --output appimage

生成:

myapp-x86_64.AppImage

✅ 双击运行
❌ 文件偏大


六、Docker(服务器程序推荐)

FROM ubuntu:22.04
COPY myapp /usr/bin/myapp
CMD ["myapp"]
docker build -t myapp .

七、总结建议

场景 推荐方式
自己/内网 可执行文件
Ubuntu 用户 .deb
跨版本 AppImage
服务器 Docker
工程化 CMake + CPack

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

  • 是 GUI 还是命令行
  • 是否用 Qt / Boost
  • 目标用户是谁

我可以直接给你一套可复制的打包模板。

0 踩