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

相关推荐
木心月转码ing39 分钟前
WSL+Cpp开发环境配置
linux
爱可生开源社区21 小时前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
蝎子莱莱爱打怪1 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
崔小汤呀1 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
随逸1771 天前
《从零搭建NestJS项目》
数据库·typescript
何中应1 天前
vi编辑器使用
linux·后端·操作系统
何中应1 天前
Linux进程无法被kill
linux·后端·操作系统
何中应1 天前
rm-rf /命令操作介绍
linux·后端·操作系统
何中应1 天前
Linux常用命令
linux·操作系统
葛立国1 天前
从 / 和 /dev 说起:Linux 文件系统与挂载点一文理清
linux