在目标跟踪数据集VOT环境详细配置过程中,遇到以下问题:
ERROR: Unable to compile MEX function: "E:\saliency\vot-toolkit\native\trax\support\matlab\traxserver.cpp: In function 'int fd_is_valid(int)':
E:\saliency\vot-toolkit\native\trax\support\matlab\traxserver.cpp:29:22: error: 'F_GETFD' was not declared in this scope
return fcntl(fd, F_GETFD) != -1 || errno != EBADF;
^~~~~~~
E:\saliency\vot-toolkit\native\trax\support\matlab\traxserver.cpp:29:29: error: 'fcntl' was not declared in this scope
return fcntl(fd, F_GETFD) != -1 || errno != EBADF;
^
".
错误使用 initialize_native (line 87)
Unable to compile all native resources.
出错 workspace_create (line 143)
initialize_native();
操作到这一步的时候,出现的错误
“运行之后需要在命令行选择数据集(输入5)、为你要跑的跟踪器起个名字(输入ncc)、编程语言(输入1),然后当看到下面右图的画面时说明当前一切正常:”
根据参考资料中的类似问题解决方式,此问题出现在编译MEX function时出错,具体原因是缺少某些函数。解决方法是重新建立正确的链接,即使用以下命令:
cd /usr/local/MATLAB/R2016b/sys/os/glnxa64 # Matlab对应路径
sudo mv libstdc++.so.6.0.25 bak-libstdc++.so.6.0.25
sudo mv libstdc++.so.6 bak-libstdc++.so.6
sudo ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25 ./
sudo ln -sf ./libstdc++.so.6.0.25 ./libstdc++.so.6
需要注意的是,根据实际的文件版本修改命令中的文件名。之后重新启动Matlab即可解决该问题。
你把源码发给我看一下