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

相关推荐
大傻^2 分钟前
SpringAI2.0 向量存储生态:Redis、Amazon S3 与 Bedrock Knowledge Base 集成
数据库·人工智能·向量存储·springai
轩情吖10 分钟前
MySQL之索引
android·数据库·mysql·b+树·索引·page·
国冶机电安装12 分钟前
自动化工程:推动工业智能化与效率提升的核心技术
运维·自动化
知识分享小能手23 分钟前
edis入门学习教程,从入门到精通,Redis编程开发知识点详解(4)
数据库·redis·学习
qq_3349031528 分钟前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
wutang0ka30 分钟前
高频 SQL 50题 197.上升的温度
数据库·sql
薛定谔的悦34 分钟前
嵌入式 OTA(远程固件升级)(二)
服务器·数据库·能源·储能·ota
V1ncent Chen34 分钟前
SQL大师之路 14 子查询
数据库·sql·mysql·数据分析
一殊酒1 小时前
【Docker】快速入门指南
运维·docker·容器
奇点爆破XC1 小时前
统计数据库当前数据容量
数据库