Ubuntu 上 C++ 代码部署全流程
一 准备与构建
sudo apt update && sudo apt install -y build-essential cmake g++g++ hello.cpp -O2 -o hello && ./hellomkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
二 本地或服务器运行与发布
./your_app。scp your_app user@server:/opt/yourapp/ssh user@server "cd /opt/yourapp && ./your_app"rsync -avz --delete your_app user@server:/opt/yourapp/[Unit]
Description=Your C++ App
After=network.target
[Service]
ExecStart=/opt/yourapp/your_app
WorkingDirectory=/opt/yourapp
Restart=always
User=www-data
Environment=LD_LIBRARY_PATH=/opt/yourapp/lib:$LD_LIBRARY_PATH
[Install]
WantedBy=multi-user.target
sudo systemctl enable yourappsudo systemctl start|restart|status yourappjournalctl -u yourapp -f(实时查看日志)。三 依赖管理与库分发
LD_LIBRARY_PATH=/opt/yourapp/lib:$LD_LIBRARY_PATH ./your_app[Service] 中设置 Environment=LD_LIBRARY_PATH=/opt/yourapp/lib:$LD_LIBRARY_PATHsudo ldconfigldd your_app 或 objdump -x your_app | grep NEEDED四 打包与发布形态
# 1) 准备可执行文件与图标
# 2) 生成 APPDIR
./linuxdeploy-x86_64.AppImage --appdir=AppDir -e your_app --create-desktop-file --icon-file=app.png
# 3) 打包为 AppImage
./appimagetool-x86_64.AppImage AppDir
dpkg-deb 打包fakeroot/
├── DEBIAN
│ ├── control # Package, Version, Architecture, Depends, Description
│ └── md5sums
└── usr
└── bin
└── your_app
五 Web 服务场景部署要点
g++ main.cpp -o myapp -std=c++17 -pthread && ./myappserver {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
sudo systemctl restart nginx