gpt4 book ai didi

linux - 为许多 Linux 发行版编译

转载 作者:IT王子 更新时间:2023-10-29 01:11:44 24 4
gpt4 key购买 nike

简而言之,我将发布一个用 OCaml 编写的应用程序,我计划通过源代码分发它。

问题是 OCaml 开发系统不是轻量级的,也不是很常见,所以我想以二进制方式为各种操作系统发布它。

  • Windows 没有问题,因为我可以通过 cygwin 编译它并使用所需的 dll 分发它
  • OS X 也不是问题,因为我可以轻松地编译和分发它(我试过的没有外部依赖)

当到达 Linux 时,问题就来了,因为我真的不知道哪种编译和分发它的最佳方式。程序本身不依赖任何东西(一切都是静态链接的)但是如何覆盖许多分布?

我有一台 ubuntu server 10 虚拟化的 amd64 架构,我用这台机器在 Linux 下测试程序,一切正常。当然,如果我尝试将二进制文件移动到 32 位 ubuntu,它会停止工作并且我无法尝试不同的发行版......是否有解决此类问题的技巧? (这似乎反复出现)

例如:

  • 我可以在同一台机器上同时编译 32 位和 64 位吗?
  • 在 ubuntu 下编译的二进制文件是否也可以在其他发行版上运行?
  • 在想要涵盖尽可能多的发行版时,我应该考虑哪些“分支”?

最佳答案

  • 您通常可以相对轻松地在 64 位机器上生成 64 位和 32 位二进制文​​件 - 即发行版通常在其编译器包中提供适当的支持,您可以实际测试您的构建。请注意,操作系统也需要是 64 位的,而不仅仅是 CPU。

  • 静态二进制文件通常随处运行,提供来自内核和 CPU 的充分支持 - 请密切关注您的编译器选项以确保这一点。它们是兼​​容性的最佳选择。共享库可能是个问题。为了解决这个问题,可以将与共享库链接的二进制文件与这些库捆绑在一起,并在必要时使用加载程序脚本运行。

  • 你至少应该用 dpkg 包定位 Debian/Ubuntu,用 RPM 定位 Redhad/Fedora/Mandriva,再用 RPM 定位 SUSE/OpenSUSE(我分别提到这两个 RPM 案例,因为你可能需要为它们生成单独的包分布的“家庭”)。您还应该为其余部分提供 .tar.bz2 或 .run 安装程序。

  • 您可以查看提供的选项,例如Oracle for Java 和 VirtualBox,了解他们如何提供软件。

关于linux - 为许多 Linux 发行版编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4200669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com