我正在尝试将bash项目编译成可分发的二进制文件。我尝试了shc,除了我的所有source
语句都被破坏之外,它都有效。我有许多source
语句来保持代码库更清晰,但在使用shc
编译时它们会被破坏。如何编译我的bash项目,以便最终用户可以只拥有一个文件,而不是拥有一堆.sh
文件?
答案 0 :(得分:2)
Shc是一个混淆器,而不是编译器。在一天结束时,它仍会调用/ bin / sh或其他任何内容,并将其提供给您原始脚本。它没有任何想法你的脚本实际上做了什么。如果需要附加文件来源,则必须在适当的位置提供。
您可能需要调查SHAR之类的内容。构建anarchive,然后根据需要使用shc编译它。
答案 1 :(得分:1)
听起来你所缺少的是扩展所有source
语句的工具。如果您的代码库在使用这些语句时相当一致,那么写起来应该相当容易:只需编写一个脚本来将它们内联展开然后就可以了。
或者,只需将所有脚本放入单个Zip文件或tarball中,然后告诉用户提取该文件的内容,或者即使这样太多,我相信你可以想象一种编码zipped的方法将所有非主文件的内容放入主文件底部的巨型注释中,并在继续之前提取所需内容。
或者,您知道,请为您的系统使用适当的安装程序。为RHEL或Debian软件包或Windows MSI或其他任何内容构建RPM ....