故障排除:无法在目标计算机上加载共享对象
在目标计算机上加载并运行一个依赖于共享对象 (.so) 的实时应用程序时,该实时应用程序无法运行也无法加载该库。在系统日志中,会出现类似以下错误的消息:
ldd:FATAL: Could not load library xyz.so
问题含义
加载共享对象时出现错误,可能表明目标计算机上的库依赖项存在缺失或损坏的问题。问题可能是:
下载到目标计算机 Speedgoat® 的过程中,修改或删除了目标计算机上的某些必需文件。
下载到目标计算机后,该库被放置在了一个在实时应用程序运行时无法访问的位置。
尝试此解决方法
这些解决方法针对可能出现的问题进行了探讨。
Check for Issues with Required Files
要检查此问题,请连接到目标计算机,然后尝试构建、加载并运行示例模型 slrt_ex_osc。如果使用默认目标计算机,请在 MATLAB® 命令行窗口中输入:
tg = slrealtime;
connect(tg);
openExample('slrealtime/SlrtAddIOBlocksToSimulinkModelExample');
open_system('slrt_ex_osc');
slbuild('slrt_ex_osc');
load('slrt_ex_osc');
start('slrt_ex_osc');
如果您能够成功连接到目标计算机,并成功构建、加载和运行实时应用程序,则说明目标计算机上的文件没有问题。
如果无法成功完成这些操作,请使用 force 选项更新目标计算机的软件。如果使用默认目标计算机,请在 MATLAB 命令行窗口中输入:
update(tg,'force',true);
软件更新完成后,请连接到目标计算机,并尝试构建、加载和运行该实时应用程序。
Check Location of Shared Object on Target Computer
要检查此问题,请使用 SSH 或 FTP 查看目标计算机上共享对象文件的位置。有关详细信息,请参阅通过控制台或 SSH 执行目标计算机的命令行命令。
在构建了与共享对象关联的实时应用程序后,您必须将该实时应用程序和共享对象安装到目标计算机上。将共享对象放置在目标计算机上的某个位置,以便在运行时能够找到并加载它们。推荐的位置是 /lib、/usr/lib 或 /usr/local/lib。要复制或修改这些位置中的文件,需要 root 权限。
另请参阅
update | slrealtime.getSupportInfo