Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我正在尝试将一个名为VideoIO的视频库与MATLAB一起用于机器学习项目。当我尝试在MATLAB中调用该库时,出现一个错误,提示它找不到libavutil.so.50 ,即VideoIO依赖的ffmpeg库之一。我检查了几处不同的内容,但找不到任何看起来不对的东西,除了它没有运行。有人可以建议其他检查方法来帮助我进行调试吗?
这是错误: error while loading shared libraries: libavutil.so.50: cannot open shared object file: No such file or directory ??? Error using ==> videoReader_ffmpegPopen2 EOF found while trying to read the communication tag. The server process probably died. String so far: "" Function: int VideoIO::readMessageHeader(FILE*) File : pipecomm.h Line : 306 Error in ==> videoReader.videoReader at 152 vr.handle = feval(vr.plugin, 'open',vr.handle, ... 试图找出问题出在哪里,我发现在哪里分配了vr : vr = struct('plugin',pvtVideoIO_mexName(mfilename, plugin), ... 'handle',int32(-1)); 我打印出mfilename ,然后在指向的文件上运行ldd : $ ldd videoReader_ffmpegPopen2Server linux-vdso.so.1 => (0x00007fff41dff000) libavutil.so.50 => /u/goodfeli/ffmpeg/libavutil/libavutil.so.50 (0x00007fd5f2895000) libavdevice.so.52 => /u/goodfeli/ffmpeg/libavdevice/libavdevice.so.52 (0x00007fd5f268c000) libavformat.so.52 => /u/goodfeli/ffmpeg/libavformat/libavformat.so.52 (0x00007fd5f23bf000) libavcodec.so.52 => /u/goodfeli/ffmpeg/libavcodec/libavcodec.so.52 (0x00007fd5f1792000) libavfilter.so.1 => /u/goodfeli/ffmpeg/libavfilter/libavfilter.so.1 (0x00007fd5f1584000) libswscale.so.0 => /u/goodfeli/ffmpeg/libswscale/libswscale.so.0 (0x00007fd5f1351000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x000000378ea00000) libm.so.6 => /lib64/libm.so.6 (0x0000003788a00000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x000000378c600000) libc.so.6 => /lib64/libc.so.6 (0x0000003788600000) libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003789200000) libasound.so.2 => /lib64/libasound.so.2 (0x000000379a200000) libbz2.so.1 => /lib64/libbz2.so.1 (0x0000003b0b400000) libz.so.1 => /lib64/libz.so.1 (0x0000003789600000) /lib64/ld-linux-x86-64.so.2 (0x0000003787400000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003788e00000) librt.so.1 => /lib64/librt.so.1 (0x000000378b200000) 现在,通过复制粘贴libavutil的路径,我确认它是正确的: $ ls /u/goodfeli/ffmpeg/libavutil/libavutil.so.50 /u/goodfeli/ffmpeg/libavutil/libavutil.so.50 因此该文件存在。现在在MATLAB中,我检查MATLAB的LD_LIBRARY_PATH变量: >> getenv('LD_LIBRARY_PATH') ans = /soft/diro/share/matlabr2009b/sys/os/glnxa64:/soft/diro/share/matlabr2009b/bin/glnxa64:/soft/diro/share/matlabr2009b/extern/lib/glnxa64:/soft/diro/share/matlabr2009b/runtime/glnxa64:/soft/diro/share/matlabr2009b/sys/java/jre/glnxa64/jre/lib/amd64/native_threads:/soft/diro/share/matlabr2009b/sys/java/jre/glnxa64/jre/lib/amd64/server:/soft/diro/share/matlabr2009b/sys/java/jre/glnxa64/jre/lib/amd64:/u/goodfeli/ffmpeg/libavfilter:/u/goodfeli/ffmpeg/libswscale:/u/goodfeli/ffmpeg/libavdevice:/u/goodfeli/ffmpeg/libavformat:/u/goodfeli/ffmpeg/libavcodec:/u/goodfeli/ffmpeg/libavutil:/opt/lisa/os/cuda/lib64:/opt/lisa/os/cuda/lib:/opt/lisa/byhost/lib:/opt/lisa/os/lib/vtk:/opt/lisa/os/lib/intelmkl/lib/32:/opt/lisa/os/lib:/opt/lisa/os/lib64:/usr/local/lib:/usr/lib64/atlas/::/opt/lisa/os/panda/lib:/opt/lisa/os/lib32:/opt/lisa/byhost/lib32 这似乎是正确的,它包含/u/goodfeli/ffmpeg/libavutil/ ,通过复制粘贴可以确认没有错字: $ ls /u/goodfeli/ffmpeg/libavutil/ | grep "\.so" 关于下一步要检查的任何建议?提前致谢。 回答: 在调用Matlab之前设置export LD_DEBUG=libs可能会提供一些线索。 更多&回答... |
![]() |
![]() |