用于二进制分发的 clang 编译器标志(通用 CPU)
Posted
技术标签:
【中文标题】用于二进制分发的 clang 编译器标志(通用 CPU)【英文标题】:clang compiler flags for binary distribution (generic CPU) 【发布时间】:2015-12-17 06:48:45 【问题描述】:我正在为 OSX 使用 cmake
和 clang
(700.1.81) 在大约 1 年的 OSX 10.11 上编译跨平台 C/C++ CLI 应用程序。人民币元。我正在使用 CPack 将我的应用程序打包为拖放式.dmg
安装程序。
当我在旧机器(~ 4 .y.o)上测试二进制文件时,我经常遇到SIGILL
非法指令错误(即使在相同的 OSX 版本上)。我应该使用哪些神奇的编译器调用来构建“通用”CPU? llc
例如支持-mpcu=generic
标志,但clang 不识别该标志,并且clang man
页面建议-march=cpu
,但如果我尝试-march=generic
我得到error: unknown target CPU 'generic'
错误。
我已经通过-mmacosx-version-min
指定了旧的 OSX 版本,这似乎不是问题。
我是否必须通过目标三元组指定通用 CPU?那里有哪些选择?
【问题讨论】:
【参考方案1】:对于通用架构,请尝试-march=x86-64
。例如,这应该可以防止生成 Haswell 特定的指令。
【讨论】:
我使用-march=x86-64
在 i7 上生成了一些通用的东西,但是当我尝试在 Pentium G(均为 64 位)中执行时,我得到了大量的非法指令。将尝试-mtune=generic
而不是以上是关于用于二进制分发的 clang 编译器标志(通用 CPU)的主要内容,如果未能解决你的问题,请参考以下文章