Optimization 是否可以编译自动使用不同处理器的程序?

Optimization 是否可以编译自动使用不同处理器的程序?,optimization,gcc,compilation,Optimization,Gcc,Compilation,是否有可能编译一些自动使用它在指令集上运行的不同处理器的东西 理想情况下,在gcc和c上,无需在代码中显式执行 -mtune(单独)会这样做吗?最新版本的gcc具有-march=native,它将生成代码以使用运行编译器的机器上可用的所有指令集扩展,但它不会生成二进制文件,在运行时检测哪些扩展可用。可以编写代码来检测哪些扩展可用,并在此基础上使用不同的代码路径(这是性能敏感代码(如游戏引擎)的常见技术),但我不知道有任何工具可以自动生成此代码和不同版本的代码 如果您想创建一个可以在多个不同体系结

是否有可能编译一些自动使用它在指令集上运行的不同处理器的东西

理想情况下,在gcc和c上,无需在代码中显式执行


-mtune(单独)会这样做吗?

最新版本的gcc具有
-march=native
,它将生成代码以使用运行编译器的机器上可用的所有指令集扩展,但它不会生成二进制文件,在运行时检测哪些扩展可用。可以编写代码来检测哪些扩展可用,并在此基础上使用不同的代码路径(这是性能敏感代码(如游戏引擎)的常见技术),但我不知道有任何工具可以自动生成此代码和不同版本的代码


如果您想创建一个可以在多个不同体系结构(如x86和ARM)上运行的二进制文件,您需要创建一个称为fat二进制文件的文件,或者用苹果公司的营销术语,创建一个通用二进制文件:这需要为每个体系结构编译一次代码,并将不同体系结构的二进制文件链接到同一个文件中。这只适用于支持fat二进制文件的操作系统,因为操作系统需要知道它必须只加载正确体系结构的段。

是的,它被称为java=P