通过从应用程序捆绑包复制lib,意外地将dylib文件覆盖到usr / local / lib

时间:2019-08-21 00:45:05

标签: macos ffmpeg dylib mp4box

我重写了/ usr / local / bin /中的某些dylib文件,现在在运行程序时遇到问题。有办法恢复这些文件吗?

ffmpeg程序对我来说运行良好。然后,我安装了程序GPAC并执行以下操作:

$ sudo cp MP4Box /usr/local/bin/

$ sudo cp -R /Applications/GPAC.app/Contents/MacOS/lib/* /usr/local/lib/

之所以这样做,是因为因为/ usr / local / lib /在$ PATH中,所以它允许我从命令行运行MP4Box。

但是现在当我尝试运行

$ ffmpeg

我收到此错误:

  

dyld:库未加载:/usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib   引用自:/ usr / local / bin / ffmpeg原因:库不兼容   版本:ffmpeg需要版本10.0.0或更高版本,但是   libSDL2-2.0.0.dylib提供版本5.0.0中止陷阱:6

我认为发生了什么事:我将一些本不应该做的文件改写到了/ usr / local / lib /中。在这种情况下,我用GPAC应用程序包中的5.0.0版本覆盖了10.0.0版本libSDL2-2.0.0.dylib。

我尝试使用自制软件卸载并重新安装ffmpeg,希望它会需要更新我的dylib库。

$ brew uninstall ffmpeg

$ brew install ffmpeg

$ ffmpeg

但这会导致相同的错误。

这是我从/Applications/GPAC.app/Contents/MacOS/lib/*复制到/ usr / local / lib /

的所有文件的列表

libSDL2-2.0.0.dylib libfreetype.6.dylib libplds4.dylib liba52.0.dylib libgpac.dylib libpng16.16.dylib libavcodec.58.dylib libjpeg.9.dylib libpostproc.55.dylib libavdevice.58.dylib liblzma.5.dylib libssl.1.0.0.dylib libavfilter.7.dylib libmad.0.dylib libswresample.3.dylib libavformat.58.dylib libmozjs185.1.0.dylib libswscale.5.dylib libavresample.4.dylib libmp3lame.0.dylib libtheora.0.dylib libavutil.56.dylib libnspr4.dylib libvorbis.0.dylib libcrypto.1.0.0.dylib libogg.0.dylib libx264.152.dylib libfaad.2.dylib libplc4.dylib

1 个答案:

答案 0 :(得分:0)

虽然直接运行brew以重新安装ffmpeg不能正常工作,但我发现运行brew以重新安装ffmpeg的依赖关系确实可以工作。

因此对于前面的示例,libSDL2-2.0.0.dylib没有正确加载。我用Google搜索brew libSDL2-2.0.0.dylib,发现它的brew包名称是sdl2。

我跑了

$ brew reinstall sdl2

$ ffmpeg

,我再也没有遇到libSDL2-2.0.0.dylib错误!我对ffmpeg表示需要的每个低级库都重复了这一步骤,并且最终成功了。