PHP二进制可执行文件,linux有没有把一个二进制可执行文件制作成另一个并且把依赖库包含其中的工具啊?...

有,比如可以用patchelf修改二进制程序的依赖库和链接器位置,然后把二进制程序和依赖的库(ldd找出来)一起打包即可.比如解压即用,跨Linux发行版PHP7打包文末提供了打包的方法:

pack.sh

#!/bin/bash

#运行 cd /png/pack && ./pack.sh

PHP=/png/php/7.0.0

#备份原有文件

tar cf /png/pack/backup/php7.tar "$PHP"

cp -R "$PHP" "${PHP}".backup

#找出二进制和共享库

PHP_BIN_LIB="$(find '$PHP' -type f -exec file -i '{}' \; | egrep 'x-executable; charset=binary|x-sharedlib; charset=binary' | awk -F ': ' '{print $1}')"

echo "$PHP_BIN_LIB" > bin_lib.txt

PHP_BIN="$(find '$PHP' -type f -exec file -i '{}' \; | grep 'x-executable; charset=binary' | awk -F ': ' '{print $1}')"

echo "$PHP_BIN" > bin.txt

#复制库链接器

cp /lib64/ld-linux-x86-64.so.2 /png/pack/libs

#复制依赖库

for i in `cat bin_lib.txt`; do

deps="$(ldd '$i' | awk -F ' ' '{print $3}'|grep '.so')"

for j in "$deps"; do

cp -n "$j" /png/pack/libs

done

done

#设置二进制文件的rpath和interpreter

for i in `cat bin.txt`; do

/png/pack/patchelf --set-rpath /png/pack/libs --force-rpath "$i"

/png/pack/patchelf --set-interpreter /png/pack/libs/ld-linux-x86-64.so.2 "$i"

done

#打包库和修改后的程序

tar cJf /png/pack/php7.tar.xz /png/pack/libs "$PHP"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Linux系统中,当遇到"无法执行二进制文件"和"可执行文件格式错误"的错误提示时,这通常是由于尝试执行不兼容的或者已经损坏的可执行文件所导致的。这些错误提示可能发生于以下几种情况下: 1. 文件格式不正确:可执行文件可能处于损坏的状态,或者不是Linux系统所支持的可执行文件格式。可能的解决方法是检查文件是否完整,或者重新下载文件。 2. 缺少执行权限:可执行文件缺少执行权限,因此无法在系统中运行。可以使用chmod命令给文件添加执行权限,例如:chmod +x filename。 3. CPU架构不兼容:可执行文件可能是为不同的CPU架构编译的,例如尝试在x86架构的系统上运行ARM架构的可执行文件。如果这是问题的原因,那么无法直接在当前系统上运行该文件。 4. 缺少依赖可执行文件可能依赖于某些文件,但系统中缺少了这些文件,因此无法执行。可以尝试通过安装相应的文件来解决这个问题。 总之,当出现"无法执行二进制文件"和"可执行文件格式错误"的错误提示时,考虑到上述原因,并进行相应的检查和调整,以解决这个问题。 ### 回答2: 当我们在Linux系统上运行一个二进制文件时,如果遇到"无法执行二进制文件"或者"可执行文件格式错误"的错误,通常是由于以下几个原因导致的: 1. 文件类型错误: 可能该文件并不是一个真正的二进制可执行文件,而是一个文本文件、脚本文件或其他类型的文件。在Linux系统中,只有具有可执行权限的二进制文件才能被系统运行。请确保你正在试图运行的文件一个真正的二进制可执行文件。 2. 文件损坏或编译错误: 如果文件在下载、复制或编译的过程中遭到损坏,或者编译时出现了错误,可能会导致文件的格式不正确。在这种情况下,重新下载或编译该文件可能会解决问题。 3. 文件与系统不兼容: 可能是因为该文件编译时使用了与你的系统不兼容的特定编译器或。在Linux系统上,不同的发行版和版本可能存在差异,导致某些文件无法在特定系统上运行。如果是这种情况,你需要寻找与你的系统兼容的版本或重新编译该文件。 总之,"无法执行二进制文件"或"可执行文件格式错误"的错误可能由文件类型错误、文件损坏或编译错误,以及文件与系统不兼容等原因引起。要解决这个问题,你可以检查文件类型、重新下载或编译文件,或者寻找与你的系统兼容的版本。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值