用于二进制分发的 clang 编译器标志(通用 CPU)

clang compiler flags for binary distribution (generic CPU)

我正在 OSX 使用 cmakeclang (700.1.81) 为 OSX 编译跨平台 C/C++ CLI 应用程序] 10.11 在 ~1 y.o。 RMBP。我正在使用 CPack 将我的应用程序打包为拖放式 .dmg 安装程序。

当我在旧机器 (~ 4 .y.o) 上测试二进制文件时,我经常遇到 SIGILL 非法指令错误(即使在相同的 OSX 版本上)。我应该使用哪些神奇的编译器调用来构建 "generic" CPU? llc 例如支持 -mpcu=generic 标志,但 clang 无法识别该标志,并且 clang man 页面建议 -march=cpu,但如果我尝试 -march=generic我收到 error: unknown target CPU 'generic' 错误。

我已经通过 -mmacosx-version-min 指定了较旧的 OSX 版本,这似乎不是问题所在。

我是否必须通过目标三元组指定通用 CPU?有哪些选项?

对于通用架构,请尝试 -march=x86-64。例如,这应该可以防止生成特定于 Haswell 的指令。