Linux 程序打包

参考文献:

  1. Linux(ubuntu)下打包C++代码并运行于其他ubuntu上
  2. linux C++打包程序总结
  3. Linux shell 中获取当前目录的方法
  4. Linux shell路径变量出现空格时的处理方法

假设编译了一个 cmd 可执行文件,想要把它交给其他人运行。

找到动态库

  1. 首先新建一个文件夹 exe,并把 cmd 复制进去

  2. 在文件下新建 lib 文件夹,用于存储依赖的动态库

  3. 执行如下的 packlib.sh 文件,找出 cmd 所依赖的动态库

    bash 复制代码
    #!/bin/sh  
    exe="./cmd" #发布的程序名称
    des="./lib" #创建文件夹的位置
    deplist=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')  
    cp $deplist $des

链接动态库

  1. 执行如下的 run.sh 文件,

    bash 复制代码
    #!/bin/sh  
    appname=cmd #要运行的程序名
    dirname="$PWD"/lib #依赖库路径
    LIBRARY_PATH=$dirname
    export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${LIBRARY_PATH}
    "$PWD"/$appname "$@"

    下面这个写法更好些,

    bash 复制代码
    #!/bin/sh  
    SHELL_FOLDER=$(cd "$(dirname "$0")";pwd)
    export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${SHELL_FOLDER}/lib
    "$SHELL_FOLDER"/cmd "$@"
  2. 成功执行 cmd 文件

相关推荐
kgduu12 分钟前
go-ethereum core之交易索引txIndexer
服务器·数据库·golang
柱子子子子20 分钟前
【邪修】linux (ubuntu/fedora/arch/debian) wifi hard blocked解决方法-AX210
linux·网络·ubuntu·debian
摇滚侠21 分钟前
全面掌握 PostgreSQL 关系型数据库,PostgreSQL 介绍,笔记02
数据库·笔记·postgresql
大龄Python青年29 分钟前
Linux发行版Ubuntu24.04安装教程
linux·ubuntu·1024程序员节
百锦再37 分钟前
国产数据库替代MongoDB的技术实践:金仓数据库赋能浙江省人民医院信息化建设新展望
java·开发语言·数据库·mongodb·架构·eclipse·maven
程序边界37 分钟前
MongoDB迁移到KES实战全纪录(下):性能优化与实践总结
数据库·mongodb·性能优化
武子康38 分钟前
Java-160 MongoDB副本集部署实战 单机三实例/多机同法 10 分钟起集群 + 选举/读写/回滚全流程
java·数据库·sql·mongodb·性能优化·系统架构·nosql
这儿有一堆花39 分钟前
使用 Actix-web 开发高性能 Web 服务
前端·数据库
与衫1 小时前
SQL 调试不再靠猜:Gudu SQL Omni 让血缘分析一键可视化
数据库·sql
强里秋千墙外道1 小时前
【Linux】ssh升级到最新版本-以ubuntu为例
linux·运维·ssh