排查模型与静态库或共享对象的链接问题
在将实时应用程序链接到静态库 (.a) 或共享对象 (.so) 时,会出现一些建模和运行时问题。
问题含义
在构建或运行调用静态链接库 (.a) 或共享对象库 (.so) 的实时应用程序时,有几点注意事项可帮助您使用与 Speedgoat® 目标计算机上基于 Linux®RTOS 兼容的库。在排查库的使用问题时,以下建议非常有用,包括:
一个指向基于 Linux 的 RTOS 库的链接,该库可在 Simulink Real-Time 中使用
通过 FMU 模块包含在模型中的共享对象
与实时应用程序链接的自定义静态库或共享对象
尝试此解决方法
这些解决方法针对可能出现的问题进行了探讨。
Link to Accessible Libraries or Objects
当您链接到静态库或共享对象时,该库或对象必须:
与目标计算机的实时操作系统 (RTOS) 兼容 ( Linux)
在编译时可供工具链访问
请检查以确保您已遵循库兼容性指南。请参阅External Code Integration of Libraries and C/C++ Code with Simulink Real-Time Models。请确认工具链在构建时能够访问该库。请注意,RTOS 工具无法处理文件路径中的空格。
Install Shared Objects on Target Computer
构建好与共享对象链接的实时应用程序后,请将该实时应用程序和共享对象一并安装到目标计算机上。将共享对象复制到目标计算机上的某个位置,以便在运行时能够找到并加载它们。推荐的位置是 /lib、/usr/lib 或 /usr/local/lib。要将文件复制到这些位置,需要 root 权限。
Rebuild Real-Time Application When Rebuilding Static Libraries
由于已链接的静态库被包含在实时应用程序中,因此当您修改并重新构建某个静态库时,也会重新构建所有包含该库的实时应用程序。重新构建静态库和实时应用程序后,请在目标计算机上重新安装实时应用程序。
另请参阅
主题
- 编译对 S-Function 的支持
- 编译功能模型单元的源代码
- External Code Integration of Libraries and C/C++ Code with Simulink Real-Time Models
- 故障排除:无法在目标计算机上加载共享对象