为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕码人8056858 2021-03-21 10:18:32
我编写在共享工作区中使用的工具。由于在这个空间中有多个OS在工作,因此我们通常使用Python并标准化跨计算机安装的版本。但是,如果我想用C编写一些东西,我想知道是否可以将应用程序包装在Python脚本中,以检测操作系统并启动正确版本的C应用程序。每个平台都有可用的GCC,并使用相同的外壳。一种想法是将C编译到用户本地〜/ bin,并与C代码进行时间戳比较,这样就不会在每次运行时都编译它,而仅在代码更新时才编译。另一个方法是只针对每个平台进行编译,然后让包装器脚本选择适当的可执行文件。是否有一个公认的/稳定的过程?有渔获吗?是否有其他选择(假设绝对需要使用本机C代码)?澄清:涉及多个不共享ABI的OS。例如。OS X,各种Linux,BSD等。我需要能够更新共享文件夹中的代码,并使新代码或多或少地即时起作用。分发二进制或源程序包不理想。
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

仅为了选择正确的二进制文件而启动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,依此类推。

如果您一直都在添加新工具,那么这将无法正常工作,因为用户将需要重新加载别名。

不过,我不建议以这种方式分发工具。测试和验证新版本的工具应该占用足够的时间和精力,以至于将工具分发给用户所需的额外时间是微不足道的。您似乎正在优化以减少分发时间。如果在编写和构建工具时出现任何问题,特别是在细微的跨平台问题蔓延的情况下,在实时环境中快速更换工具很可能导致漫长而混乱的停机时间。


查看完整回答
反对 回复 2021-03-22
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

您知道,您应该看一下静态链接。

如今,我们所有人都拥有巨大的硬盘驱动器,而额外的几兆字节(用于携带libc等)实际上已经不再是什么大问题了。

您也可以尝试在chroot()监狱中运行您的应用程序并将其分发。


查看完整回答
反对 回复 2021-03-22
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

根据您的混合操作系统,最好为每类系统创建软件包。

或者,如果它们都共享相同的ABI和硬件体系结构,则还可以编译静态二进制文件。


查看完整回答
反对 回复 2021-03-22
  • 3 回答
  • 0 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信