我编写在共享工作区中使用的工具。由于在这个空间中有多个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,依此类推。
如果您一直都在添加新工具,那么这将无法正常工作,因为用户将需要重新加载别名。
不过,我不建议以这种方式分发工具。测试和验证新版本的工具应该占用足够的时间和精力,以至于将工具分发给用户所需的额外时间是微不足道的。您似乎正在优化以减少分发时间。如果在编写和构建工具时出现任何问题,特别是在细微的跨平台问题蔓延的情况下,在实时环境中快速更换工具很可能导致漫长而混乱的停机时间。
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
您知道,您应该看一下静态链接。
如今,我们所有人都拥有巨大的硬盘驱动器,而额外的几兆字节(用于携带libc等)实际上已经不再是什么大问题了。
您也可以尝试在chroot()监狱中运行您的应用程序并将其分发。
添加回答
举报
0/150
提交
取消