用于二进制分发的 clang 编译器标志(通用 CPU)
clang compiler flags for binary distribution (generic CPU)
我正在 OSX 使用 cmake
和 clang
(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 的指令。
我正在 OSX 使用 cmake
和 clang
(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 的指令。