对我来说,这听上去像是不可能完成的任务,但有些人比我更了解,所以我想或许我有机会:)
我想有一个文件linux虚拟主机,将在Windows和Linux上执行。
基本上,程序可以由2部份组成。
第1部份是可以在Windows上运行的Windows可执行文件。
第2部份是可以在Linux上运行的Linuxshell脚本。
有没有办法build立这样的文件,Linux可以忽视Windows二补码可执行字节,只是运行附加为文本的二补码Windows可执行文件的shell脚本?
我企图添加字节之前的WindowsEXE,其实Windows难以辨识该文件。所以是的,我不能把任何东西的可执行文件的字节,但我可以将它们添加到文件的末尾。
之后,在Linux上,我采取了纯脚本
#!/bin/bash echo "Hello world?" exit 0
并在脚本之前添加了一些文本。它只是埋怨不存在的命令,但继续执行文件,我得到了“helloworld”文本输出。
catrunLinuxPart.sh>>myMix.exe两个东西放到一起(catrunLinuxPart.sh>>myMix.exe),之后chmod+xmyMix.exe之后运行它,我得到Theentrypointmethodcouldnotbeloaded
linuxshell文件是一种自我提取–安装程序。它保存在最后的.tar和脚本在后面,所以假如我在Linux上运行.sh,它会得到.tar,提取并做所有我须要的。
windowsexe文件的目的是联接远程linux机器linux系统编程,从自己的解压.shfileupload到linux,之后运行。
我想给一个自我安装文件给用户。
假如这个我的梦想是不可能的linux运行exe命令linux运行exe命令,我其实也可以与2个独立的安装程序确定
Linuxshell脚本应当以#!开头。LinuxELF可执行文件应当以x7FELF。假如一个Windows可执行文件不能以这种字节开始,你的梦想是不可能的。我相信PE(Windows可执行文件的二补码格式)不能从那些开始(但我不确定)。为此,您的通用安装程序单个文件是不可能的梦想。
在Linux上,你可以考虑玩binfmt_misc或shar。
阅读Levine的LinkersandLoaders一书,以及elf(5)&execve(2)的Linux指南页。