ubuntu linux 环境下的程序打包

有时为了打包自己的编译好的程序,如ffmpeg到其它机子上运行,需要打包

参考博主文章ubuntu linux 环境下的QT程序打包_王者之路001的博客-CSDN博客后做了些修改,完成以下的打包脚本 pkg.sh:

#!/bin/sh

src="ffmpeg" #发布的程序名称,想要打包的可执行文件
des="./out1" #程序打包路径,这是最终生成打包文件路径,不要先mkdir $des

if [ -d $des ]; then
    echo "$des is exists"
    echo "exit"
    exit 1
fi
mkdir $des
lstdep=$(ldd $src| awk  '{if (match($3,"/")){ printf("%s "),$3 } }')
cp $lstdep $des
cp $src $des

echo "如果执行目标机子的glibc(libc.so.0、libm.so.0、libpthread.so.0)库小于编译机子"
echo "需要处理, Y to patchelf"
read ch
if [ $ch = "Y" ]; then
    echo "start patchelf them..."
    cd $des
    mv libc.so.6 libc_1.so.6
    mv libm.so.6 libm_1.so.6
    mv libpthread.so.0 libpthread_1.so.0
    patchelf --remove-needed libc.so.6 $src
    patchelf --add-needed libc_1.so.6 $src
    patchelf --remove-needed libm.so.6 $src
    patchelf --add-needed libm_1.so.6 $src
    patchelf --remove-needed libpthread.so.0 $src
    patchelf --add-needed libpthread_1.so.0 $src
    cp /lib64/ld-linux-x86-64.so.2 .
    patchelf --set-interpreter ld-linux-x86-64.so.2 --set-rpath ./ $src
    cd -
    echo "end patchelf"
fi

exit 0

执行 bash pkg.sh

测试:

cd $des

export LD_LIBRARY_PATH=`pwd`

执行程序,如:./ffmpeg

ldd ffmpeg

OK

在此感谢王者之路001

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值