【发布时间】:2022-01-22 03:50:14
【问题描述】:
我有一个程序:
dist/
├── myapp
│ ├── bin
│ │ └── launcher
│ ├── lib
│ │ └── libmyapp.so
│ └── share
│ ├── data00.zip
│ └── data01.zip
我想要做的是将所有这些合并到一个可执行文件中,这样对于最终用户来说,它是一个可以复制的单个文件。
我也可以使用 bash shell 文件。另外,我可以控制 .so 文件。我可以将它静态链接到播放器。
如何将所有这些组合成一个/合并的可执行文件?
这是在 linux 上。 .zip 文件使用fopen() 打开。我希望能有某种魔法,比如 FUSE 或类似技术。
我希望避免将 .zip 作为 DATA 段有效负载嵌入或使用 .h 文件,因为这会以我不希望的方式改变我的程序。这更像是一个包装问题。
【问题讨论】:
-
适用于哪个平台?
-
zip 文件是如何使用的?
-
zip 文件是使用 fopen 等 API 命令加载的,以在 /share 文件夹中查找 .zip。代码查找
pwd,然后向上遍历share/以查找.zip 文件 -
我遇到了这个makeself.io,它似乎解决了部分问题——可能已经解决了问题。它将二进制文件提取到临时文件夹中。更好的解决方案是不提取。
-
您可以将您的 zip 文件转换为 C 标头并在您的代码中使用它;例如:
xxd -i data00.zip > mydata00.h
标签: c linux bash packaging software-packaging