exponenta event banner

Устранение неполадок компилятора

Ошибки несоответствия версий компилятора

Описание

При построении возникает ошибка несоответствия версий компилятора.

Действие

  1. Проверьте список поддерживаемых и совместимых компиляторов, доступных по адресу www.mathworks.com/support/compilers/current_release/.

  2. Обновите или измените компилятор. Дополнительные сведения см. в разделе Выбор и настройка компилятора.

  3. Перестроить модель.

Результаты моделирования модели и выполнения программы различаются

Описание

Программа, созданная для модели, дает различные результаты моделирования модели. Созданный исходный код включает в себя арифметическую операцию, которая создает переполнение целого числа со знаком. Возможно, компилятор не реализует поведение обертки для условий переполнения целого числа со знаком. Или, если вы используете компилятор, который поддерживает упаковку, возможно, вы не настроили его для использования -fwrapv вариант.

Дополнительные сведения см. в разделе «Генератор кода использует неопределенное поведение языка C при переполнении целых чисел».

Действие

  • Если компилятор может принудительно выполнять перенос, включите его. Например, для компилятора gcc или компилятора на основе gcc, например MinGW, укажите параметр компилятора -fwrapv.

  • Выберите компилятор, проверяющий переполнение целых чисел.

  • Если у вас есть Embedded Coder ®, разработайте и примените библиотеку замены кода для замены кода, созданного для целых чисел со знаком.

Создание ожидаемого кода и получение непредвиденных результатов

Описание

Процесс построения создает ожидаемый исходный код, но исполняемая программа приводит к неожиданным результатам. Созданный исходный код отображается так, как и ожидалось. Однако исполняемая программа дает неожиданные результаты.

Действие

Выполните одно из следующих действий:

  • Понизьте уровень оптимизации компилятора.

    1. Задайте для параметра конфигурации уровня оптимизации компилятора значение Custom.

    2. В поле Пользовательские флаги оптимизации компилятора укажите более низкий уровень оптимизации.

    3. Перестроить модель.

  • Отключить оптимизацию компилятора.

    1. Установить уровень оптимизации компилятора в Optimizations off (faster builds).

    2. Перестроить модель.

Дополнительные сведения см. в разделе Оптимизация компилятора управления и документация компилятора.

Проблемы со временем компиляции

ПроблемаДействие

Ошибка присутствует в конфигурации компилятора.

Убедитесь, что MATLAB ® поддерживает компилятор и версию, которые вы хотите использовать. Список поддерживаемых и совместимых компиляторов см. в разделеwww.mathworks.com/support/compilers/current_release/. При необходимости обновите или измените компилятор (см. раздел Выбор и настройка компилятора или Выбор и настройка компилятора).

Переменные среды неправильно настроены для утилиты make, компилятора или компоновщика. Например, установка средств Cygwin на платформе Windows влияет на переменные среды, используемые другими компиляторами.

Просмотрите настройки переменных среды для системы с помощью set на платформе Windows или setenv на платформе Linux ®. Убедитесь, что параметры соответствуют тем, которые требуются для используемых инструментов.

Ошибка присутствует в пользовательском коде, указанном как S-функциональный блок, или в пользовательском коде. Например, код ссылается на файл заголовка, который компилятор не может найти.

Чтобы изолировать источник проблемы, удалите пользовательский код из модели, выполните отладку и перестроите модель.

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

Удалите системный целевой файловый блок или настройте модель для использования с другим системным целевым файлом.

Ошибка компоновщика относительно неопределенной ссылки на данные появляется, когда при построении модели создается исполняемая программа из иерархии ссылок на модель, и выполняются следующие условия:

  • Данные сигнала, состояния или параметра можно представить путем создания объекта данных, например Simulink.Signal. Объект используется в иерархии ссылок на модель.

  • С объектом данных используется пользовательский класс хранения. Для пользовательских классов хранения требуется встроенный кодер.

  • Владелец объекта устанавливается в модель, не имеющую прямого доступа к данным.

  • Вы используете цепочку инструментов lcc-win64.

Чтобы решить проблему, выберите один из следующих способов:

  • В объекте данных снимите флажок Owner собственность. Либо задайте владельца модели, которая непосредственно обращается к данным.

  • Использовать другую цепочку инструментов, например gcc, вместо lcc.

Компилятор LCC не поддерживает амперсанды в путях исходных папок

Описание

При использовании компилятора LCC путь к папке модели содержит амперсанд (&), процесс построения приводит к ошибке.

Действие

Удалите амперсанд из пути к папке модели. Затем восстановите модель.

Компилятор LCC может не поддерживать длины строк кода быстрого ускорителя

Описание

При компиляции кода ускорителя Rapid компилятор LCC может вызвать ошибку, связанную с предельными значениями строк. Код Rapid Accelerator может иметь большую длину строки из-за запутанности.

Действие

Скомпилировать код Rapid Accelerator с помощью компилятора, поддерживающего более длинные строки кода.

Связанные темы

Внешние веб-сайты