Поиск и устранение проблем с компилятором

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

Описание

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

Действие

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

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

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

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

Описание

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

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

Действие

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

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

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

Генерирует ожидаемый код и приводит к неожиданным результатам

Описание

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

Действие

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

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

    1. Установите параметр конфигурации Compiler optimization level равным Custom.

    2. В поле Custom compiler optimization flags задайте более низкий уровень оптимизации.

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

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

    1. Установите Compiler optimization level значение Optimizations off (faster builds).

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

Для получения дополнительной информации см. «Оптимизация компилятора управления» и документацию компилятора.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Используйте другой набор инструментов, например gcc, вместо lcc.

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

Описание

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

Действие

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

Компилятор LCC может не поддерживать длины линий кода Rapid Accelerator

Описание

Если вы компилируете код Rapid Accelerator, компилятор LCC может привести к ошибке, связанной с пределами линии. Быстрый код Accelerator может иметь более длинные линии из-за запутывания.

Действие

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

Похожие темы

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