![在另一个架构上运行 -march 优化的软件?](https://linux22.com/image/28368/%E5%9C%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%9E%B6%E6%9E%84%E4%B8%8A%E8%BF%90%E8%A1%8C%20-march%20%E4%BC%98%E5%8C%96%E7%9A%84%E8%BD%AF%E4%BB%B6%EF%BC%9F.png)
我正在运行带有 LFS 的 Athlon64 服务器,并且希望在虚拟机中拥有该服务器的本地副本,以用于测试目的和构建软件。
我的电脑使用 i7,现有的服务器软件是使用 -march=athlon64 构建的。尽管进行了优化,我可以在我的硬件上运行它吗?
答案1
这-行进标志允许编译器使用其他 CPU 不支持的指令。有一些可以合法使用但-march=athlon64
您的 i7 不支持的指令。这些是 3DNow!和增强型 3DNow! MMX 或整数 SSE 中未包含的指令。如果代码使用类似指令PFPNACC它会在你的 i7 上出现故障。
也就是说,它实际上不太可能使用任何此类指令,因为这些指令通常被发现没什么用处 - 有用的 3DNow!指令已合并到 MMX 或 iSSE 中,您的 CPU 确实支持这些指令。
所以它不能保证有效,但可能会有效。
-march=cpu 类型:生成机器类型的指令
cpu-type
。 ...-march=cpu-type
允许 GCC 生成以下代码可能根本无法在指定处理器以外的处理器上运行。
答案2
您将能够运行它,尽管性能会受到一点影响。