Кросс-скомпилируйте код, сгенерированный на Microsoft Windows

Чтобы сгенерировать код с генератором кода в системе Microsoft® Windows®, но скомпилировать сгенерированный код на различной поддерживаемой платформе, можно сделать так путем изменения TMF и образцовых параметров конфигурации. Например, необходимо было бы следовать за этим процессом, если вы разрабатываете приложения с MATLAB® и продуктами Simulink® в системе Windows, но вы запускаете свой сгенерированный код в системе Linux®.

Чтобы настроить среду разработки кросс-компиляции, сделайте следующее (здесь, система Linux является целевой платформой):

  1. В вашей системе Windows скопируйте UNIX® TMF для своей цели к локальной папке. Эта папка является вашей рабочей папкой для того, чтобы инициировать генерацию кода. Например, вы могли скопировать файл matlabroot/rtw/c/grt/grt_unix.tmf в D:/work/my_grt_unix.tmf.

  2. Внесите следующие изменения в свою копию TMF:

    • Добавьте следующую строку около строки SYS_TARGET_FILE =:

       MAKEFILE_FILESEP = /
    • Ищите строку 'ifeq ($(OPT_OPTS),$(DEFAULT_OPT_OPTS))' и, для каждого вхождения, удалите условную логику и сохраните только код 'else'. Таким образом, удалите все от 'if' до 'else', включительно, и заключительный 'endif'. Только строки от фрагмента 'else' остаются. Эта логика обеспечивает библиотеки времени выполнения, чтобы создать для системы Linux.

  3. Откройте свою модель и внесите следующие изменения в панели Code Generation диалогового окна Configuration Parameters:

    • Задайте имя своего нового TMF в текстовом поле (Simulink Coder) make-файла Шаблона (например, my_grt_unix.tmf).

    • Выберите Generate code only и нажмите Apply.

  4. Сгенерируйте код.

  5. Если папкой сборки (папка, от которой была создана модель) уже не является доступный Linux, скопируйте его в Linux доступный путь. Например, если вашей папкой сборки для сгенерированного кода был D:\work\mymodel_grt_rtw, скопируйте то целое дерево папки в путь, такой как /home/user/mymodel_grt_rtw.

  6. Если деревом папки MATLAB в системе Windows является доступный Linux, пропустите этот шаг. В противном случае скопируйте включать и исходные папки к Linux доступный раздел диска, например, /home/user/myinstall. Эти папки появляются в make-файле после ADD_INCLUDES = и могут быть найдены путем поиска $(MATLAB_ROOT). Должны быть скопированы пути, которые содержат $(MATLAB_ROOT). Вот список примеров (ваш список отличается в зависимости от вашей модели):

    $(MATLAB_ROOT)/rtw/c/grt
    $(MATLAB_ROOT)/extern/include
    $(MATLAB_ROOT)/simulink/include
    $(MATLAB_ROOT)/rtw/c/src
    $(MATLAB_ROOT)/rtw/c/tools

    Кроме того, пути, содержащие $(MATLAB_ROOT) в правилах сборки (строки с %.o :), должны быть скопированы. Например, на основе правила сборки

    %.o : $(MATLAB_ROOT)/rtw/c/src/ext_mode/tcpip/%.c
    скопируйте следующую папку:
    $(MATLAB_ROOT)/rtw/c/src/ext_mode/tcpip

    Примечание

    Иерархия пути относительно корня MATLAB должна сохраняться. Например, c:\MATLAB\rtw\c\tools\* был бы скопирован в /home/user/mlroot/rtw/c/tools/*.

    Для некоторого blocksets является самым легким скопировать высокоуровневую папку, которая включает подпапки, перечисленные в make-файл. Например, продукт DSP System Toolbox™ требует, чтобы следующие папки были скопированы:

    $(MATLAB_ROOT)/toolbox/dspblks
    $(MATLAB_ROOT)/toolbox/rtw/dspblks
  7. Внесите следующие изменения в сгенерированный make-файл:

    • Установите и MATLAB_ROOT и ALT_MATLAB_ROOT, равный Linux доступный путь к matlabroot (например, home/user/myinstall).

    • Установите COMPUTER на компьютерное значение для вашей платформы, такой как GLNX86. Введите help computer в Окно Команды MATLAB для списка компьютерных значений.

    • В списке ADD_INCLUDES измените папку сборки (определяющий местоположение сгенерированного кода в системе Windows) и породите папки к доступному Linux, включают папки. Например, измените D:\work\mymodel_grt_rtw\ на /home/user/mymodel_grt_rtw.

      Кроме того, если matlabroot является путем UNC, таким как \\my-server\myapps\matlab, замените трудно закодированный корень MATLAB на $(MATLAB_ROOT).

  8. От интерпретатора Linux скомпилируйте код, который вы сгенерировали в системе Windows. Можно скомпилировать путем выполнения сгенерированного файла model.bat или путем ввода сделать командной строки, как это появляется в файле .bat.

    Примечание

    Если ошибки происходят во время выполнения make-файла, можно запустить утилиту dos2unix на make-файле (например, dos2unix mymodel.mk).

Похожие темы