我正在本地计算机上使用常规cabal build
进行构建,因此二进制文件可以正常工作。但是,当我将二进制文件复制到另一台服务器进行测试时(据我所知,相同的体系结构:x86_64和相同的glic等),我在尝试运行它时收到非法指令。
是否应该传递一些标志给cabal以使它可以编译更通用的二进制文件?
谢谢
答案 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
下运行以获取回溯信息,看看是否可以发现可疑库或其他明显原因,可能会有所帮助。