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

相关推荐
砖头拍死你几秒前
Powershell使用vim修改文件保存后文件名自动全变小写
linux·编辑器·vim
5G丶3 分钟前
ThinkPHP 集群部署完整指南
数据库·php
wang09078 分钟前
linux的中断分析(硬中断和软中断)
linux·运维·服务器
赵优秀一一20 分钟前
Python 工程化基础1:环境(conda)、pip、requirements.txt
linux·开发语言·python
阿沁QWQ20 分钟前
Docker 核心技术和实现原理
运维·docker·容器
刘~浪地球26 分钟前
数据库与缓存--MySQL 高可用架构设计
数据库·mysql·缓存
风酥糖28 分钟前
chroot的Linux服务配置-当云服务器真正用起来
linux·运维·服务器
木鱼布28 分钟前
安装arm虚机启动失败
linux·运维·arm开发
知识分享小能手29 分钟前
MongoDB入门学习教程,从入门到精通,MongoDB的了解应用程序的动态(18)
数据库·学习·mongodb
oradh30 分钟前
Oracle数据类型概述(一)
数据库·oracle·oracle基础·oracle入门基础·oracle数据类型