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 文件

相关推荐
Ruiery5 分钟前
Linux 6.6内核 CPU 启动深度解析(二):AP 拉起 — BSP 如何用 INIT-SIPI 唤醒其余 CPU
linux·运维·服务器
Omics Pro8 分钟前
经典多组学整合算法→商用云平台
数据库·人工智能·算法·机器学习·自然语言处理
Lsetea8 分钟前
OpenSSL verify报error 62:证书主机名不匹配与-verify_hostname排查
运维·https·ssl证书·openssl·san
xcLeigh10 分钟前
【KingbaseES数据库教程】国产化信创背景下的数据库选型与初识
linux·数据库·windows·kes·数据选型
rm -rf * && haha.sh13 分钟前
【Linux】Rocky 9.8 操作系统磁盘分区与MySQL数据目录迁移
linux·运维·mysql
高山有多高38 分钟前
【Linux笔记】Socket编程基础
linux
吴声子夜歌42 分钟前
Nginx应用与运维——Nginx Web服务应用实战(Python网站的搭建)
运维·前端·nginx
资深技术分享员1 小时前
Geejing WebBuilder 数据库连接配置与在线 SQL 工具,运维的左右手
运维·数据库·sql·低代码
高山有多高1 小时前
【Linux笔记】UpdSocket
linux·运维·笔记
皓月盈江1 小时前
Linux系统grep、sed 、awk介绍下,使用方法及区别?
linux·运维·服务器·sed·grep·awk