非法指示-Haskell

时间:2019-04-18 08:24:37

标签: haskell

我正在本地计算机上使用常规cabal build进行构建,因此二进制文件可以正常工作。但是,当我将二进制文件复制到另一台服务器进行测试时(据我所知,相同的体系结构:x86_64和相同的glic等),我在尝试运行它时收到非法指令。

是否应该传递一些标志给cabal以使它可以编译更通用的二进制文件?

谢谢

1 个答案:

答案 0 :(得分:0)

与GCC不同,GHC编译器只有少数选项可以优化指令集,并且默认情况下它们全部关闭。完整列表为:

-msse -msse2 -msse3 -msse4 -msse4.2 -mbmi -mbmi2 -mavx -mavx2
-mavx512cd -mavx512er -mavx512f -mavx512pf

,但是没有相应的-mno-sse或类似选项可以将其关闭,因为就像我说的那样,它们默认情况下处于关闭状态。 (实际上,在x86_64架构上,-msse-msse2标志在技术上是强制启用的,因此不能禁用。)

因此,问题可能出在其他地方,很可能是库不兼容或损坏。在gdb下运行以获取回溯信息,看看是否可以发现可疑库或其他明显原因,可能会有所帮助。