Диагностируйте проблемы компилятора

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

Описание

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

Действие

  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/. При необходимости обновите или измените свой компилятор (см., Выбирают и Конфигурируют Компилятор или Выбирают и Конфигурируют Компилятор).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Описание

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

Действие

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

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

Описание

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

Действие

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

Похожие темы

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