非法指令 - haskell

问题描述 投票:2回答:1

我正在我的本地机器上使用常规cabal build构建,二进制工作正常。但是,当我将二进制文件复制到另一台服务器进行测试时(相同的架构:x86_64和相同的glic等等,就像我所知道的那样)当我尝试运行它时,我得到非法指令。

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

谢谢

haskell
1个回答
0
投票

与GCC不同,GHC编译器只有少数选项来调整指令集,默认情况下它们都是关闭的。完整清单是:

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

但没有相应的-mno-sse或类似的选项可以关闭它们,因为就像我说的那样,它们默认是关闭的。 (嗯,实际上,在x86_64架构上,-msse-msse2标志在技术上被强制打开,无法禁用。)

所以,问题可能是其他问题,很可能是一个不兼容或损坏的库。在gdb下运行以获得回溯并查看是否可以发现可疑库或其他明显原因可能会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.