在共享的多平台POSIX环境中使用C

我编写在共享工作区中使用的工具。由于在这个空间中有多个OS在工作,因此我们通常使用Python并标准化跨计算机安装的版本。但是,如果我想用C编写一些东西,我想知道是否可以将应用程序包装在Python脚本中,以检测操作系统并启动正确版本的C应用程序。每个平台都有可用的GCC,并使用相同的外壳。

一种想法是将C编译到用户本地〜/ bin,并与C代码进行时间戳比较,这样就不会在每次运行时都编译它,而仅在代码更新时才编译。另一个方法是只针对每个平台进行编译,然后让包装器脚本选择适当的可执行文件。

是否有一个公认的/稳定的过程?有渔获吗?是否有其他选择(假设绝对需要使用本机C代码)?

澄清:涉及多个不共享ABI的OS。例如。OS X,各种Linux,BSD等。我需要能够更新共享文件夹中的代码,并使新代码或多或少地即时起作用。分发二进制或源程序包不理想。


慕码人8056858
浏览 268回答 3
3回答

长风秋雁

仅为了选择正确的二进制文件而启动Python解释器实例将比您需要的重得多。我将分发提供别名的shell .rc文件。在/ shared / bin中,放置各种二进制文件:/ shared / bin / toolname-mac,/ shared / bin / toolname-debian-x86,/ shared / bin / toolname-netbsd-dreamcast等,然后,在共享的shell .rc文件中,您可以根据平台设置逻辑来设置别名,以便在OSX上获得别名toolname = / shared / bin / toolname-mac,依此类推。如果您一直都在添加新工具,那么这将无法正常工作,因为用户将需要重新加载别名。不过,我不建议以这种方式分发工具。测试和验证新版本的工具应该占用足够的时间和精力,以至于将工具分发给用户所需的额外时间是微不足道的。您似乎正在优化以减少分发时间。如果在编写和构建工具时出现任何问题,特别是在细微的跨平台问题蔓延的情况下,在实时环境中快速更换工具很可能导致漫长而混乱的停机时间。

小怪兽爱吃肉

您知道,您应该看一下静态链接。如今,我们所有人都拥有巨大的硬盘驱动器,而额外的几兆字节(用于携带libc等)实际上已经不再是什么大问题了。您也可以尝试在chroot()监狱中运行您的应用程序并将其分发。

蝴蝶不菲

根据您的混合操作系统,最好为每类系统创建软件包。或者,如果它们都共享相同的ABI和硬件体系结构,则还可以编译静态二进制文件。
打开App,查看更多内容
随时随地看视频慕课网APP