1

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

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

$ sudo cp MP4Box /usr/local/bin/

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

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

但是现在当我尝试跑步时

$ 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

4

1 回答 1

2

虽然直接运行brew重新安装ffmpeg没有用,但我发现运行brew重新安装ffmpeg的依赖确实有效。

所以对于前面的例子,libSDL2-2.0.0.dylib 没有正确加载。我用谷歌搜索了 brew libSDL2-2.0.0.dylib,发现它的 brew 包名称是 sdl2。

我跑了

$ brew reinstall sdl2

$ ffmpeg

而且我再也没有收到 libSDL2-2.0.0.dylib 错误了!我对 ffmpeg 说它需要的每个低级库都重复了这个,它最终起作用了。

于 2019-08-21T01:54:47.483 回答