Опция 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, но получающееся изображение может работать некорректно.