Опция enum_is_int

В настоящее время я работаю на платформе Intel x118, используя arm env. Я обнаружил, что должен принудительно открыть эту опцию, чтобы убедиться, что ссылка не имеет проблем, в противном случае могут возникнуть такие ошибки, как:

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

Эта опция заставляет размер всех типов перечисления быть не менее четырех байтов.

Эта опция по умолчанию отключена, и используется самый маленький тип данных, который может содержать значения всех перечислителей.

Если вы указываете файл конфигурации ARM Linux в командной строке, эта опция включена по умолчанию.

Примечание--enum_is_int опция не рекомендуется для общего пользования.

1 ответ

Решение

Эта опция может немного увеличить объем памяти вашего кода, но, вероятно, незначительно. Это безопасно для использования и требуется в этом случае, так как компоновщик не будет связывать объекты, считается несовместимым.

Тем не менее, вы можете переопределить ошибку компоновщика, используя параметр командной строки --diag-warning=6242, но получающееся изображение может работать некорректно.

Другие вопросы по тегам