我使用特定标志(-Os、-O2、-march=native 及其组合)编译了代码,以便产生更快的执行时间。
但我的问题是我并不总是在同一台机器上运行(因为在我的实验室中有几台不同的机器)。有时我在 MacOS 或 Linux 中运行(这两种情况都具有不同的操作系统版本)。
我想知道是否有一种方法可以根据二进制文件运行的环境(我的意思是缓存大小、CPU 核心和有关特定机器的其他属性)来确定将运行哪个二进制文件?换句话说,如何根据所使用的具体机器选择(当程序加载时)更快的二进制文件(之前使用不同的目标二进制文件大小和指令集扩展进行编译)?
提前致谢。
What you're talking about is called a fat binary (not FAT, the acronym). From Wikipedia1 https://en.wikipedia.org/wiki/Fat_binary:
胖二进制文件(或多架构二进制文件)是一种计算机可执行程序,已使用多个指令集本机代码进行扩展(或“增肥”),因此可以在多种处理器类型上运行。这会导致文件比普通的单一架构二进制文件大,因此得名。
乍一看,似乎没有太多支持(参见这个问题 https://softwareengineering.stackexchange.com/questions/274846/why-arent-fat-binaries-more-widely-used-for-cross-platform-applications从 Programmer StackExchange 获取更多信息)。苹果在从 PowerPC 过渡到英特尔时曾短暂实现过这一点,但此后似乎并没有对此进行太多探索。
从技术上讲,胖二进制文件是指可以在多个体系结构上运行的单个二进制文件......但我想前提是适用于在多个操作系统上运行的单个二进制文件。这又回到了 Bizkit 在他/她/zir 的回答中提出的观点——通常,你会提前为你所处的环境编译源代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)