文档

使用packNGo将代码重新定位到另一个开发环境

使用“代码生成器packNGo”选项在一个位置生成代码。生成代码后,收集编译器命令行选项,将生成的代码移动到另一个位置,并结合自定义代码编译生成的代码。

检查平台并设置路径和文件夹

对于本例,您必须在Linux®平台上运行gcc工具链。验证此平台后,此示例将设置路径、文件夹和文件。

重新运行该示例时,为了便于清理生成的文件,工作文件夹(代码\u生成\u区域\u目录建筑面积)与源文件分开(模型库目录手语代码).

源文件和文件夹的所有位置都使用相对于包含example.M文件的文件夹的路径。

如果伊斯马克%要在Mac平台上运行的代码disp(“不支持平台(Macintosh)。”金宝app)埃尔塞夫ispc%要在Windows平台上运行的代码disp(“不支持平台(Windows)。”金宝app)埃尔塞夫isunix
originalFolder=pwd;thisFilesFullName=mfilename(“完整路径”);thisFilesAbsolutePath=fileparts(thisFilesFullName);modelsFolder=fullfile(thisFilesAbsolutePath,“模型库目录”); codeGenerationRootFolder=...完整文件(此文件绝对路径,“代码\u生成\u区域\u目录”);buildAreaRootFolder=...完整文件(此文件绝对路径,“构建区域目录”);handCodeFolder =...完整文件(此文件绝对路径,“手动代码”目录);

清理

为了从以前运行的示例中消除构建工件,本示例搜索并消除包含以前运行的这些副产品的文件夹。下载188bet金宝搏

如果(0 < exist(codeGenerationRootFolder,“dir”))清楚墨西哥人;rmdir(codeGenerationRootFolder,'s');其他的%没有以前的codeGenerationRootFolder。终止mkdir (codeGenerationRootFolder);如果(0<存在(buildAreaRootFolder,“dir”))清楚墨西哥人;rmdir(buildAreaRootFolder,'s');其他的%没有以前的buildAreaRootFolder。终止mkdir(buildAreaRootFolder);如果(0<存在(modelsFolder,“dir”))清楚墨西哥人;rmdir(modelsFolder、,'s');其他的%没有以前的型号文件夹。终止mkdir(modelsFolder);copyfile((fullfile)(matlabroot),“工具箱”,“rtw”,“rtwdemos”,“rtwdemo_packngo”,“rtwdemo_packngo.slx”)),...(完整文件(模型文件夹,“rtwdemo_packngo.slx”)),“f”);如果(0<存在(handCodeFolder,“dir”))清楚墨西哥人;rmdir(handCodeFolder,'s');其他的%没有以前的HandCode文件夹。终止mkdir(handCodeFolder);copyfile((完整文件)(matlabroot,“工具箱”,“rtw”,“rtwdemos”,“rtwdemo_packngo”,“main.c”)),...(完整文件(handCodeFolder,“main.c”)),“f”);copyfile((完整文件)(matlabroot,“工具箱”,“rtw”,“rtwdemos”,“rtwdemo_packngo”,“main.h”)),...(完整文件(handCodeFolder,“main.h”)),“f”);Directories ToAddToMatlabPathCellstr=...{...这条路,...模型文件夹...};对于directoryIndex=1:numel(directoryStoAddToMatlabPathCellStr)currentDirectory=directoryStoAddToMatlabPathCellStr{directoryIndex};addpath(currentDirectory);终止

生成代码并输出带有packNGo的.zip文件

在本例中,的代码生成配置rtwdemo_packngo模型使仅生成代码参数(仅限GENCODE)并使包代码和工件参数(PackageGeneratedCode和Artifacts)。这些选项指示代码生成器创建帕克恩戈档案馆(拉链并停止生成过程,而不编译生成的代码。稍后将使用集成的自定义代码进行编译,以替换生成的main.c文件。

cd(codeGenerationRootFolder);modelBaseName=“rtwdemo_packngo”;打开_系统(modelBaseName);slbuild(modelBaseName);关闭_系统(modelBaseName);
###开始模型的构建过程:rtwdemo_packngo####成功完成模型的代码生成:rtwdemo_packngo

从Makefile中提取构建信息

在生成过程中使用工具链方法时,您可以从生成的生成文件中提取生成信息。这些信息包括源文件、依赖项文件以及生成文件中出现的宏定义和值。如果当前工作文件夹设置为包含生成的生成文件的文件夹,则在mm和窗口,类型:

cd (“rtwdemo_packngo_grt_rtw”);系统('gmake-f rtwdemo_packngo.mk info')
### product = ../ rtwdemo_packngo # # # PRODUCT_TYPE =执行# # # BUILD_TYPE =顶级独立可执行的# # #包括=我/ tmp / Bdoc19b_1305395_228588 / tp53651845 / ex21882019 / code_generation_area_dir - i / tmp / Bdoc19b_1305395_228588 / tp53651845 ex21882019 / code_generation_area_dir / rtwdemo_packngo_grt_rtw - i / mathworks /猛击/棒/ Bdoc19b /构建/ matlab /走读生/包括我/ mathworks猛击/棒/ Bdoc19b /构建/ matlab / simu金宝applink /包括我/ mathworks /猛击/棒/ Bdoc19b /构建/ matlab rtw / c / src - i / mathworks猛击/棒/ Bdoc19b /构建/ matlab rtw / c / src / ext_mode常见的# # #定义= -DCLASSIC_INTERFACE = 0 -DALLOCATIONFCN = 0 -DMAT_FILE = 0 -DONESTEPFCN = 1 -DTERMFCN = 1 -DMULTI_INSTANCE_CODE = 0 -DINTEGER_CODE -DTID01EQ = 0 = 0 dmt = 0### ALL_SRCS = /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/code_generation_area_dir/rtwdemo_packngo_grt_rtw/rtwdemo_packngo.c /mathworks/devel/bat/Bdoc19b/build/matlab/rtw/c/src/common/rt_main.c ### # ALL_OBJS =rtwdemo_packngo .co rt_main。# # #库阿= # # # MODELREF_LIBS = # # # # # # SYSTEM_LIBS = - lm TOOLCHAIN_LIBS = # # # CFLAGS = - c -fwrapv ansi迂腐-Wno-long-long - fpic o0 -DCLASSIC_INTERFACE = 0 -DALLOCATIONFCN = 0 -DMAT_FILE = 0 -DONESTEPFCN = 1 -DTERMFCN = 1 -DMULTI_INSTANCE_CODE = 0 -DINTEGER_CODE = 0 dmt = 0 -DTID01EQ = 0 -DMODEL = rtwdemo_packngo -DNUMST = 1 -DNCSTATES = 0 -DHAVESTDIO -DRT-DUSE_RTMODEL -DUNIX - i / tmp / Bdoc19b_1305395_228588 / tp53651845 / ex21882019 / code_generation_area_dir - i / tmp / Bdoc19b_1305395_228588 / tp53651845 ex21882019 / code_generation_area_dir / rtwdemo_packngo_grt_rtw - i / mathworks /猛击/棒/ Bdoc19b /构建/ matlab /外面的包括我/ mathworks /猛击/棒/ Bdoc19b /构建/金宝app matlab / simulink /包括我/ mathworks猛击/棒/ Bdoc19b /构建/ matlab rtw / c / src - i / mathworks猛击/棒/ Bdoc19b /构建/ matlab rtw / c / src / ext_mode常见的# # # LDFLAGS = - wl rpath、/ mathworks猛击/棒/ Bdoc19b /构建/ matlab / bin / glnxa64, - l / mathworks猛击/棒/ Bdoc19b /构建/ matlab / bin / glnxa64 # # # SHAREDLIB_LDFLAGS = - shared- wl, rpath / mathworks猛击/棒/ Bdoc19b /构建/ matlab / bin / glnxa64, - l / mathworks猛击/棒/ Bdoc19b /构建/ matlab / bin / glnxa64 - wl,——no-undefined # # # CPPFLAGS = - c -fwrapv化c++ 03迂腐-Wno-long-long - fpic o0 -DCLASSIC_INTERFACE = 0 -DALLOCATIONFCN = 0 -DMAT_FILE = 0 -DONESTEPFCN = 1 -DTERMFCN = 1 -DMULTI_INSTANCE_CODE dmt = 0 = 0 -DINTEGER_CODE = 0-DTID01EQ = 0 -DMODEL = rtwdemo_packngo -DNUMST = 1 -DNCSTATES = 0 -DHAVESTDIO -DRT -DUSE_RTMODEL -DUNIX - i / tmp / Bdoc19b_1305395_228588 / tp53651845 / ex21882019 / code_generation_area_dir - i / tmp / Bdoc19b_1305395_228588 / tp53651845 ex21882019 / code_generation_area_dir / rtwdemo_packngo_grt_rtw - i / mathworks /猛击/棒/ Bdoc19b /构建/ matlab /走读生/包括我/ mathworks猛击/棒/ Bdoc19b /构建/ matlab / simu金宝applink /包括我/ mathworks /猛击/棒/ Bdoc19b /构建/ matlab rtw / c / src - i / mathworks猛击/棒/ Bdoc19b /构建/ matlab rtw / c / src / ext_mode常见的# # # CPP_LDFLAGS = - wl rpath、/ mathworks猛击/棒/ Bdoc19b /构建/ matlab / bin / glnxa64, - l / mathworks猛击/棒/ Bdoc19b /构建/ matlab / bin / glnxa64 # # # CPP_SHAREDLIB_LDFLAGS = -shared -Wl,-rpath,/mathworks/devel/bat/Bdoc19b/build/matlab/bin/glnxa64,-L/mathworks/devel/bat/Bdoc19b/build/matlab/bin/glnxa64 -Wl,--no-undefined ### ARFLAGS = ruvs ### MEX_CFLAGS = ### MEX_CPPFLAGS = ### MEX_LDFLAGS = ### MEX_CPPLDFLAGS = ### DOWNLOAD_FLAGS = ### EXECUTE_FLAGS = ### MAKE_FLAGS = -f rtwdemo_packngo.mk ans = 0

有关在Windows®平台上执行类似操作的信息,请参阅蝙蝠模型描述管理生成过程文件(金宝appSimulink编码器)。

将生成的代码和自定义代码移动到构建过程的公共位置

为了集成生成的代码和自定义代码,本例将文件移动到构建过程的一个公共位置。

cd (buildAreaRootFolder);generatedPackNGoArchiveShortName =...[modelBaseName,“.zip”];filesToCopyCellStr=...{...完整文件(codeGenerationRootFolder,generatedPackNGoArchiveShortName),...完整文件(handCodeFolder,“main.h”),...完整文件(handCodeFolder,“main.c”)...};fileCopyFunctionHandle=...@(sourceFileFullName)复制文件(sourceFileFullName,buildAreaRootFolder);对于sourceFileIndex=1:numel(filesToCopyCellStr)currentSourceFile=filesToCopyCellStr{sourceFileIndex};fileCopyFunctionHandle(currentSourceFile);终止generatedPackNGoArchiveDestinationFullName=...完整文件(buildAreaRootFolder,generatedPackNGoArchiveShortName);解压缩(generatedPackNGoArchiveDestinationFullName);

构造Build命令

为了编译生成的代码和集成的自定义代码,本示例为gcc编译器和工具构造一个build命令,该命令和工具:

  • 编译生成的源文件和自定义源文件

  • 指定预处理器可以定位包含头文件的所需文件夹

  • 提供正确的-D生成的代码所需的预处理器宏的参数

识别Build命令的源文件

生成的源文件位于从packNGo存档中提取的文件夹中(拉链文件)。文件名结合了以下内容:

  • 型号名称

  • 系统目标文件(在模型配置集中选择)

  • 原始代码生成文件夹

generatedCodeSubFolderName=...[modelBaseName,“\u grt\u rtw”];generatedCodeFolderFullName=...完整文件(buildAreaRootFolder,“代码\u生成\u区域\u目录”,GeneratedCode子文件夹名称);sourceFileFullNamesCellStr=...{...完整文件(buildAreaRootFolder,“main.c”),...fullfile(generatedCodeFolderFullName,“rtwdemo_packngo.c”)...};

识别头文件文件夹

所需的头文件文件夹包括:

  • 自定义头文件位置

  • 生成的头文件位置

  • 包含packNGo操作从MATLAB安装文件夹复制到packNGo存档的文件的位置

[~,matlabReleaseFolderName]=fileparts(matlabroot());headerFileDirectoriesCellStr=...{...buildAreaRootFolder,...generatedCodeFolderFullName,...完整文件(buildAreaRootFolder、matlabReleaseFolderName、,“外来的”,“包括”),...完整文件(buildAreaRootFolder、matlabReleaseFolderName、,“金宝appsimulink”,“包括”)...};

确定所需的预处理器宏

必须定义许多预处理器宏来指导代码中的条件编译。宏名称和值可以从defines.txt生成的代码文件夹中的文件。

CommandLineDefineCellStr=...{...'MODEL=rtwdemo_packngo',...'NUMST=1',...“NCSTATES = 0”,...“HAVESTDIO”,...“RT”,...“使用RTU模型”,...“UNIX”,...“MAT_FILE=0”,...“整型代码=0”,...“MT=0”,...“经典_接口=0”,...'分配FCN=0',...'ONESTEPFCN=1',...“TERMFCN=1”,...“多实例代码=0”,...‘TID01EQ=0’...};

将单元格数组数据准备为字符串

在将build命令的源、头、文件夹和宏信息收集到单元数组数据中之后,本例通过将该数据重新组织为正确格式的字符串来构造build命令。这些字符串作为编译命令的一部分。

命令行定义compilerargumentstring=...strjoin(strcat(“- d”,命令行definesellstr),' '); SourceFileCompilerArgumentString=...['"'strjoin(sourceFileFullNamesCellStr,'" "')'"'];inclusionDirectoriesCompilerArgumentString=...[“-我”strjoin(headerFileDirectoriesCellStr,”“我”“)'"'];编译命令字符串=...[...“gcc”,' ',...“-v”,' ',...SourceFileCompilerArgumentString,' ',...命令行定义compilerargumentstring,' ',...inclusionDirectoriesCompilerArgumentString...];

运行编译命令

编译命令是:

[编译结果,编译输出]=...系统(编译命令字符串);

查看编译结果

结果使用操作系统约定作为返回值,因为“system(…)”从操作系统返回结果。因此,“0”表示成功,而不是“1”/“true”。

断言((0==compilationResult),compilationOutput);disp(编译输出);
使用内置规格。COLLECT\u GCC=GCC COLLECT\u LTO\u WRAPPER=/mathworks/hub/3rdparty/internal/3349624/glnxa64/GCC-6.3.0/bin/。/libexec/GCC/x86\u 64-pc-linux-gnu/6.3.0/LTO-WRAPPER目标:x86\u 64-pc-linux-gnu配置为:/mathworks/devel/sandbox/rjarett/3p-internal/3p/sources/GCC-6.3/configure用GMP= /MaWorks/Davel/Sjbox/3J/3P/GLNXA64/GCC-63/GMP-4.3——MPFR/MathWorks/DeVele/Stbox /RjRaTeT/3p内/3P/GONXA64/GCC-63/MPFR——用MPC= /MathWorks/DeVel/Stbox /RjRaTeT/3P内部/3P/DIP/GLNXA64/GCC-63/MPC-ActudioLoC=C,C++,fortran——带有bugurl=http://inside.mathworks.com/wiki/Suspected_compiler_bugs,_调试--启用共享--启用链接器构建id--启用插件--启用检查=发布--启用多拱--启用黄金--启用ld=默认--启用libstdcxx时间=否--前缀=/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0--使用pkgversion='MW gcc 6.3.0-GLIBC2.12-gold'--使用tune=generic--使用系统zlib--启用多库--multilib list=m32,m64——带arch目录=amd64——带arch-32=i586——带abi=m64线程模型:posix gcc版本6.3.0(MW gcc 6.3.0-GLIBC2.12-gold)COLLECT\u GCC\u OPTIONS='-v'-D''MODEL=rtwdemo\u packngo'-D''NUMST=1'-D''NCSTATES=0'-D''HAVESTDIO'-D''RT'-D''USE\u RTMODEL'-D''UNIX'-D''MAT FILE=0'-D''INTEGER\u CODE=0'-D''MT MT 0'-D''-D''CLASSIC\u接口=0'-D''分配fcn=0'-D''-D'-D''ONESTEPFCN=1'-D''TERMFCN=1'-D''多实例\u代码=0'-tidq=0'-0'-0“/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir'-I'/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area dir/code_generation_area_dir/rtwdemo_packngo_grt_rtw'-I'-I'/tmp/Bdoc19b__13053; area 228588/tp53651845/ex21882019/build_area(dir/matlab'-I'-I'-I''“/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/simulink/include'-mtune=generic'-march=x86-64'/mathworks/hub/3rdparty/internal/3349624/gcc-6.3.0/bin/。/libexec/gcc/x86-pc-linux-gnu/6.3.0/cc1-quiet-v-I-I/tmp/Bdoc19b_-u 13053588/tp53285/exu-1845/build-I”/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/code_generation_area_dir/rtwdemo_packngo_grt_rtw-I/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/b金宝appuild area dir/matlab/extern/include-I/tmp/Bdoc19b_13053651845/include-I/ex218588/tp53651845/build area-imu-simulink-x86/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin//lib/gcc/x86\u 64-pc-linux-gnu/6.3.0/-D MODEL=rtwdemo\u packngo-D NUMST=1-D NCSTATES=0-D HAVESTDIO-D RT-D使用RTMODEL-D UNIX-D MAT\u文件=0-D整数\u代码=0-D MT=0-D经典\u接口=0-D分配fcn=0-D onestepn=1-D多术语代码=0-tidu=0/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/main.c-quiet-dumpbase main.c-mtune=generic-march=x86-64-auxbase main-version-o/tmp/Bdoc19b_1305395_228588/ccxN9PCC.s GNU C11(MW GCC 6.3.0-GLIBC2.12-gold)版本6.3.0(x86_64-pc-linux-GNU-GNU)由GNU c 6.3.0版、GMP版、FR.2.4.2.2.4版编译,MPC版本0.8.2,isl版本none GGC heuristics:--param GGC min expand=100--param GGC min heapsize=131072忽略不存在的目录“/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/。/../../../../../x86\u 64-pc-linux-gnu/include”忽略重复目录“/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/。/lib/gcc/。/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/include“忽略不存在的目录”/usr/local/include/x86_64-linux-gnu”忽略重复目录”/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin//lib/gcc/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/包括固定的“忽略不存在的目录”/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/。/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/../x86.3.0/../../x86@/。。。"搜索从这里开始:#包含<…>搜索从这里开始:/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/code_generation_area_dir/rtwdemo_packngo_grt/rtw/tmp/Bdoc19b_1305395_228588/tp53655/ex21882019/build area/matlab include/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/simulink/include/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin//lib/gcc/x86_64-pc-linux-gnu/6.3.0/include/mathworks/hub/3rdparty/internal/3349624/glnxa64-pc-linux-gnu/6.3.0/include/usr/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/。/lib/gcc/。/../include/usr/include/x86_64-linux-gnu/usr/include结束搜索列表。GNU C11(MW GCC 6.3.0-GLIBC2.12-gold)版本6.3.0(x86_64-pc-linux-GNU),由GNU C版本6.3.0、GMP版本4.3.2、MPFR版本2.4.2、MPC版本0.8.2、isl版本none GGC启发式算法编译:-参数GGC min expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: c26022ef40cbe05afcbd998c36f33b4e COLLECT_GCC_OPTIONS='-v' '-D' 'MODEL=rtwdemo_packngo' '-D' 'NUMST=1' '-D' 'NCSTATES=0' '-D' 'HAVESTDIO' '-D' 'RT' '-D' 'USE_RTMODEL' '-D' 'UNIX' '-D' 'MAT_FILE=0' '-D' 'INTEGER_CODE=0' '-D' 'MT=0' '-D' 'CLASSIC_INTERFACE=0' '-D' 'ALLOCATIONFCN=0' '-D' 'ONESTEPFCN=1' '-D' 'TERMFCN=1' '-D' 'MULTI_INSTANCE_CODE=0' '-D' 'TID01EQ=0' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/code_generation_area_dir/rtwdemo_packngo_grt_rtw' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/extern/include' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/simulink/include' '-mtune=generic' '-march=x86-64' /mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/as -v -I /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir -I /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/code_generation_area_dir/rtwdemo_packngo_grt_rtw -I /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/extern/include -I /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/simulink/include --64 -o /tmp/Bdoc19b_1305395_228588/ccNYHLFb.o /tmp/Bdoc19b_1305395_228588/ccxN9PCC.s GNU assembler version 2.28.1 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.28.1 COLLECT_GCC_OPTIONS='-v' '-D' 'MODEL=rtwdemo_packngo' '-D' 'NUMST=1' '-D' 'NCSTATES=0' '-D' 'HAVESTDIO' '-D' 'RT' '-D' 'USE_RTMODEL' '-D' 'UNIX' '-D' 'MAT_FILE=0' '-D' 'INTEGER_CODE=0' '-D' 'MT=0' '-D' 'CLASSIC_INTERFACE=0' '-D' 'ALLOCATIONFCN=0' '-D' 'ONESTEPFCN=1' '-D' 'TERMFCN=1' '-D' 'MULTI_INSTANCE_CODE=0' '-D' 'TID01EQ=0' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/code_generation_area_dir/rtwdemo_packngo_grt_rtw' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/extern/include' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/simulink/include' '-mtune=generic' '-march=x86-64' /mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../libexec/gcc/x86_64-pc-linux-gnu/6.3.0/cc1 -quiet -v -I /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir -I /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/code_generation_area_dir/rtwdemo_packngo_grt_rtw -I /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/extern/include -I /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/simulink/include -imultiarch x86_64-linux-gnu -iprefix /mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/ -D MODEL=rtwdemo_packngo -D NUMST=1 -D NCSTATES=0 -D HAVESTDIO -D RT -D USE_RTMODEL -D UNIX -D MAT_FILE=0 -D INTEGER_CODE=0 -D MT=0 -D CLASSIC_INTERFACE=0 -D ALLOCATIONFCN=0 -D ONESTEPFCN=1 -D TERMFCN=1 -D MULTI_INSTANCE_CODE=0 -D TID01EQ=0 /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/code_generation_area_dir/rtwdemo_packngo_grt_rtw/rtwdemo_packngo.c -quiet -dumpbase rtwdemo_packngo.c -mtune=generic -march=x86-64 -auxbase rtwdemo_packngo -version -o /tmp/Bdoc19b_1305395_228588/ccxN9PCC.s GNU C11 (MW GCC 6.3.0-GLIBC2.12-gold) version 6.3.0 (x86_64-pc-linux-gnu) compiled by GNU C version 6.3.0, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.2, isl version none GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring nonexistent directory "/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/include" ignoring duplicate directory "/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/../../lib/gcc/x86_64-pc-linux-gnu/6.3.0/include" ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" ignoring duplicate directory "/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/../../lib/gcc/x86_64-pc-linux-gnu/6.3.0/include-fixed" ignoring nonexistent directory "/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/../../lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/code_generation_area_dir/rtwdemo_packngo_grt_rtw /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/extern/include /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/simulink/include /mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/include /mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/include-fixed /usr/local/include /mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/../../include /usr/include/x86_64-linux-gnu /usr/include End of search list. GNU C11 (MW GCC 6.3.0-GLIBC2.12-gold) version 6.3.0 (x86_64-pc-linux-gnu) compiled by GNU C version 6.3.0, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.2, isl version none GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: c26022ef40cbe05afcbd998c36f33b4e COLLECT_GCC_OPTIONS='-v' '-D' 'MODEL=rtwdemo_packngo' '-D' 'NUMST=1' '-D' 'NCSTATES=0' '-D' 'HAVESTDIO' '-D' 'RT' '-D' 'USE_RTMODEL' '-D' 'UNIX' '-D' 'MAT_FILE=0' '-D' 'INTEGER_CODE=0' '-D' 'MT=0' '-D' 'CLASSIC_INTERFACE=0' '-D' 'ALLOCATIONFCN=0' '-D' 'ONESTEPFCN=1' '-D' 'TERMFCN=1' '-D' 'MULTI_INSTANCE_CODE=0' '-D' 'TID01EQ=0' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/code_generation_area_dir/rtwdemo_packngo_grt_rtw' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/extern/include' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/simulink/include' '-mtune=generic' '-march=x86-64' /mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/as -v -I /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir -I /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/code_generation_area_dir/rtwdemo_packngo_grt_rtw -I /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/extern/include -I /tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/simulink/include --64 -o /tmp/Bdoc19b_1305395_228588/ccCzitLK.o /tmp/Bdoc19b_1305395_228588/ccxN9PCC.s GNU assembler version 2.28.1 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.28.1 COMPILER_PATH=/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../libexec/gcc/x86_64-pc-linux-gnu/6.3.0/:/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../libexec/gcc/:/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/bin/ LIBRARY_PATH=/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/:/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/:/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../lib64/:/lib/x86_64-linux-gnu/:/lib/../lib64/:/usr/lib/x86_64-linux-gnu/:/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/lib/:/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-D' 'MODEL=rtwdemo_packngo' '-D' 'NUMST=1' '-D' 'NCSTATES=0' '-D' 'HAVESTDIO' '-D' 'RT' '-D' 'USE_RTMODEL' '-D' 'UNIX' '-D' 'MAT_FILE=0' '-D' 'INTEGER_CODE=0' '-D' 'MT=0' '-D' 'CLASSIC_INTERFACE=0' '-D' 'ALLOCATIONFCN=0' '-D' 'ONESTEPFCN=1' '-D' 'TERMFCN=1' '-D' 'MULTI_INSTANCE_CODE=0' '-D' 'TID01EQ=0' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/code_generation_area_dir/rtwdemo_packngo_grt_rtw' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/extern/include' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/simulink/include' '-mtune=generic' '-march=x86-64' /mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../libexec/gcc/x86_64-pc-linux-gnu/6.3.0/collect2 -plugin /mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../libexec/gcc/x86_64-pc-linux-gnu/6.3.0/liblto_plugin.so -plugin-opt=/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../libexec/gcc/x86_64-pc-linux-gnu/6.3.0/lto-wrapper -plugin-opt=-fresolution=/tmp/Bdoc19b_1305395_228588/ccKSkFRj.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/crtbegin.o -L/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0 -L/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc -L/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../x86_64-pc-linux-gnu/lib -L/mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../.. /tmp/Bdoc19b_1305395_228588/ccNYHLFb.o /tmp/Bdoc19b_1305395_228588/ccCzitLK.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /mathworks/hub/3rdparty/internal/3349624/glnxa64/gcc-6.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/crtend.o /usr/lib/x86_64-linux-gnu/crtn.o COLLECT_GCC_OPTIONS='-v' '-D' 'MODEL=rtwdemo_packngo' '-D' 'NUMST=1' '-D' 'NCSTATES=0' '-D' 'HAVESTDIO' '-D' 'RT' '-D' 'USE_RTMODEL' '-D' 'UNIX' '-D' 'MAT_FILE=0' '-D' 'INTEGER_CODE=0' '-D' 'MT=0' '-D' 'CLASSIC_INTERFACE=0' '-D' 'ALLOCATIONFCN=0' '-D' 'ONESTEPFCN=1' '-D' 'TERMFCN=1' '-D' 'MULTI_INSTANCE_CODE=0' '-D' 'TID01EQ=0' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/code_generation_area_dir/rtwdemo_packngo_grt_rtw' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/extern/include' '-I' '/tmp/Bdoc19b_1305395_228588/tp53651845/ex21882019/build_area_dir/matlab/simulink/include' '-mtune=generic' '-march=x86-64'

调用集成的、已编译的可执行文件

运行compile可执行文件会产生如下输出:

[executionResult,executionOutput]=系统(“/a.out”);assert((0==executionResult),executionOutput);disp(executionOutput);cd(originalFolder);
输入:1.000000输出:42.000000输入:2.000000输出:84.000000输入:3.000000输出:126.000000输入:4.000000输出:168.000000输入:5.000000输出:210.000000

将代码重新定位到其他平台或工具链的注意事项

此示例演示如何使用packNGo重新定位代码并将自定义代码与生成的代码集成。这些技术可以轻松地将生成的代码重新定位到其他平台(例如,Linux®到Windows®)。本例中显示如何构造build命令的部分提供了支持代码重定位的信息。金宝app

目标平台上的build命令(例如,Windows®上的Microsoft Visual C/C++MSVC)尽可能接近源平台上的build命令中的build工具标志和定义(例如,Linux®上的gcc)。需要一些标志和定义(例如,源文件和依赖文件列表)。其他标志是可选的(例如,编译器优化因编译器而异)。

其他的disp(“不支持平台。”金宝app)终止