Чтобы сгенерировать код с генератором кода в системе Microsoft® Windows®, но скомпилировать сгенерированный код на различной поддерживаемой платформе, можно сделать так путем изменения TMF и образцовых параметров конфигурации. Например, необходимо было бы следовать за этим процессом, если вы разрабатываете приложения с MATLAB® и продуктами Simulink® в системе Windows, но вы запускаете свой сгенерированный код в системе Linux®.
Чтобы настроить среду разработки кросс-компиляции, сделайте следующее (здесь, система Linux является целевой платформой):
В вашей системе Windows скопируйте UNIX® TMF для своей цели к локальной папке. Эта папка является вашей рабочей папкой для того, чтобы инициировать генерацию кода. Например, вы могли скопировать файл
в matlabroot/rtw/c/grt/grt_unix.tmf
D:/work/my_grt_unix.tmf
.
Внесите следующие изменения в свою копию TMF:
Добавьте следующую строку около строки SYS_TARGET_FILE =
:
MAKEFILE_FILESEP = /
Ищите строку 'ifeq ($(OPT_OPTS),$(DEFAULT_OPT_OPTS))'
и, для каждого вхождения, удалите условную логику и сохраните только код 'else'
. Таким образом, удалите все от 'if'
до 'else'
, включительно, и заключительный 'endif'
. Только строки от фрагмента 'else'
остаются. Эта логика обеспечивает библиотеки времени выполнения, чтобы создать для системы Linux.
Откройте свою модель и внесите следующие изменения в панели Code Generation диалогового окна Configuration Parameters:
Задайте имя своего нового TMF в текстовом поле make-файла Шаблона (например, my_grt_unix.tmf
).
Выберите Generate code only и нажмите Apply.
Сгенерируйте код.
Если папкой сборки (папка, от которой была создана модель) уже не является доступный Linux, скопируйте его в Linux доступный путь. Например, если вашей папкой сборки для сгенерированного кода был D:\work\mymodel_grt_rtw
, скопируйте то целое дерево папки в путь, такой как /home/user/mymodel_grt_rtw
.
Если деревом папки 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
Внесите следующие изменения в сгенерированный 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
.
Кроме того, если
является путем UNC, таким как matlabroot
\\my-server\myapps\matlab
, замените трудно закодированный корень MATLAB на $(MATLAB_ROOT)
.
От интерпретатора Linux скомпилируйте код, который вы сгенерировали в системе Windows. Можно скомпилировать путем выполнения сгенерированного файла
или путем ввода сделать командной строки, как это появляется в файле model.bat
.bat
.
Если ошибки происходят во время выполнения make-файла, можно запустить утилиту dos2unix
на make-файле (например, dos2unix mymodel.mk
).