如何使用GCC 4.4.7-17禁用bmi指令

时间:2016-06-14 04:00:07

标签: gcc cpu x86-64

我遇到gcc 4.4.7-17的问题。我在服务器上编译了一个程序,并在另一个服务器上运行了这个程序,但由于非法指令而崩溃了。

我怀疑两台服务器之间的区别可能会导致此异常。是的,我发现服务器编译程序有CPU标志bmi1和bmi2,但是运行该程序的服务器并没有!

使用gcc时如何禁用bmi指令?

1 个答案:

答案 0 :(得分:2)

<tr>-mbmi默认情况下未启用。

您可能通过在与目标计算机具有不同硬件的服务器上使用-mbmi2构建来启用它们。不要这样做。 Use -O3 -march=ivybridge or -march=bdver2 (AMD Piledriver = Bulldozer version 2), or whatever is appropriate制作二进制文件,可以使用目标支持的所有指令集扩展,并针对您的目标进行调整。 (-march=native暗示-march=x)。

此外,如果可能,请使用较新版本的gcc。 4.4现在已经很老了。 gcc 5.3是gcc5系列中的最新版本,在许多情况下可以生成更好的代码。

gcc6也已发布,但还没有发布。