0

現在、arm env を使用して Intel x118 プラットフォームで作業しています。リンクに問題がないことを確認するには、このオプションを強制的に開く必要があることがわかりました。そうしないと、次のようなエラーが発生します。

Error: L6242E: Cannot link object iui_os_irq_msk.o as its attributes are incompatible with the image attributes.
   ... packed-enum clashes with enum_is_int.
Error: L6242E: Cannot link object iui_os.o as its attributes are incompatible with the image attributes.
   ... packed-enum clashes with enum_is_int.
Error: L6242E: Cannot link object uta_os.o as its attributes are incompatible with the image attributes.
   ... packed-enum clashes with enum_is_int.
Error: L6242E: Cannot link object uta_os_critical_section.o as its attributes are incompatible with the image attributes.
   ... packed-enum clashes with enum_is_int.
Error: L6242E: Cannot link object uta_os_thread.o as its attributes are incompatible with the image attributes.
   ... packed-enum clashes with enum_is_int.
Error: L6242E: Cannot link object uta_os_event.o as its attributes are incompatible with the image attributes.
   ... packed-enum clashes with enum_is_int.
Error: L6242E: Cannot link object uta_os_event_group.o as its attributes are incompatible with the image attributes.
   ... packed-enum clashes with enum_is_int.
Error: L6242E: Cannot link object uta_os_queue.o as its attributes are incompatible with the image attributes.
   ... packed-enum clashes with enum_is_int.
Error: L6242E: Cannot link object uta_os_sem.o as its attributes are incompatible with the image attributes.
   ... packed-enum clashes with enum_is_int.
Error: L6242E: Cannot link object uta_os_common.o as its attributes are incompatible with the image attributes.
   ... packed-enum clashes with enum_is_int.
Error: L6242E: Cannot link object uta_os_mem.o as its attributes are incompatible with the image attributes.
   ... packed-enum clashes with enum_is_int.
Not enough information to list image symbols.
Not enough information to list the image map.
Finished: 13 information, 0 warning and 11 error messages.

--enum_is_intこのオプションが私のターゲットファイルに重大な影響を与えるかどうか、誰か教えてもらえますか?

さらに詳しい情報:

ARMに関するコメントを見つけました:

--enum_is_int

このオプションは、すべての列挙型のサイズを少なくとも 4 バイトに強制します。

このオプションはデフォルトでオフになっており、すべての列挙子の値を保持できる最小のデータ型が使用されます。

コマンド ラインで ARM Linux 構成ファイルを指定すると、このオプションはデフォルトでオンになります。

この--enum_is_intオプションは、一般的な使用にはお勧めできません。

4

1 に答える 1

1

このオプションにより、コードのメモリ フット プリントがわずかに増加する可能性がありますが、おそらく大幅には増加しません。リンカーはオブジェクトをリンクしないため、安全に使用でき、この場合は必須です。互換性がないと見なされます。

とはいえ、 --diag-warning=6242 コマンド ライン オプションを使用してリンカー エラーをオーバーライドできる場合もありますが、結果のイメージは正しく機能しない可能性があります。

于 2012-09-17T17:42:05.940 に答える