2016-09-20 3 views
6

最近、私たちのOS Xビルドでこの警告が表示され始めました。ld警告:stack subl命令がOS X上のdwarfスタックサイズと大きく異なる

ld: warning: 
could not create compact unwind for __Z10createMenuv: stack subl instruction is too different from dwarf stack size 
ld: warning: 
could not create compact unwind for __Z10del_modulejb: stack subl instruction is too different from dwarf stack size 
could not create compact unwind for __Z14menu_patchbytev: stack subl instruction is too different from dwarf stack size 

Chromiumバグトラッカーでこれについての説明がありますが、コンパクトな巻き戻しの生成を無効にすることが推奨されています。この警告がなぜ発生するのか、それがコードまたはツールチェーンの問題であるかどうかを理解したいと思います。

当社のツールチェインはXcodeの7.3.1からです:

Apple LLVM version 7.3.0 (clang-703.0.31) 
Target: x86_64-apple-darwin15.6.0 

答えて

0

いくつかの研究、私はあなたのコードは、特にそこツールチェーンの問題ではないことがわかり、最良の答えをやって。

64ビットではなく32ビットとして構築されています。そして、これを解決するために、あなたは、2つのうちのいずれかを実行する必要があります。

  1. は32ビット 1の代わりに、Xcodeのツールチェーンの64ビットバージョンを使用してください。
  2. 一部が巻き戻しをお勧めしますが、私は、コンパクトなアンワインドに関する警告を抑制するための任意のオプションが表示されない理由ですx86_64の コード

を放出するために、コンパイル時に適切なオプションを提供します。 -warn_compact_unwindという警告を有効にするオプションがあるようです。

コンパイラに-Wl、-wオプションを渡しているすべてのリンカ警告を表示しないようにすることができます。

もう一つの一時的な解決方法は、-Wl,-no_compact_unwindをclangに渡すことです。リンカーはコンパクトなアンワインド情報を生成しないよう指示する必要があります。

最後に、64ビットアーキテクチャ用にコンパイルを試みてください。これを行うには、-archコンパイラオプションを使用してアーキテクチャを指定します。ケースでは-arch x86_64です。 。

ほとんどのユーザーがXcode 7を指していて、Xcode 6が問題のビルドになることがあります。

さらに、これを修正する方法が1つあります。プロジェクトで

設定を構築するオプションを構築し、オプションではありません ビットコードを有効に設定見つけます。それがあなたに役立つことを願っています。

+0

私たちはXcode IDEを使用せず、 'make'と' gcc'ドライバを使ってコマンドラインからコンパイルしています。 –

+0

また、x64( '-arch x86_64')ビルドではなく、x86(' -arch i386')ビルドに対してこの警告があります。 –

関連する問題