首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何确定ffmpeg所需的依赖项?

如何确定ffmpeg所需的依赖项?
EN

Stack Overflow用户
提问于 2021-03-14 17:26:37
回答 2查看 1.6K关注 0票数 0

我已经在ubuntu上安装了ffmpeg。我将把编译好的ffmpeg和必需的依赖项复制到一个目录中,并将该目录复制到另一台计算机上。这样我们就可以在另一台机器上运行而不需要安装。如何确定复制所需的依赖项?在这个页面上看到了说明:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu,但它没有解释ffmpeg所需的依赖项。

当我使用ldd时,我得到了如下内容:

代码语言:javascript
运行
复制
    linux-vdso.so.1 (0x00007fffe20fd000)
    libavdevice.so.58 => /lib/x86_64-linux-gnu/libavdevice.so.58 (0x00007fc116e90000)
    libavfilter.so.7 => /lib/x86_64-linux-gnu/libavfilter.so.7 (0x00007fc116b10000)
    libavformat.so.58 => /lib/x86_64-linux-gnu/libavformat.so.58 (0x00007fc116890000)
    libavcodec.so.58 => /lib/x86_64-linux-gnu/libavcodec.so.58 (0x00007fc1152d0000)
    libavresample.so.4 => /lib/x86_64-linux-gnu/libavresample.so.4 (0x00007fc1152a0000)
    libpostproc.so.55 => /lib/x86_64-linux-gnu/libpostproc.so.55 (0x00007fc115270000)

这些是必需的依赖项吗?它没有列出bin下的文件,也没有包含或共享文件夹。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-14 18:28:53

这可能不是构建可移植二进制文件的最佳方法。

您看到的是库依赖项,但请注意:

  • 每个库都有它们自己的依赖项,您也需要它们来跟踪和复制;
  • 它们可能与目标机器上的库版本发生冲突,要求您使用技巧(比如设置LD_LIBRARY_PATH)来加载正确版本的库;
  • 您仍然缺少任何非lib依赖项(例如,配置文件)。

此外,仅仅将所有这些库复制到另一台计算机并不能保证它们将在那里运行,除非它使用相同的发行版版本。例如,它们可能是为不同的滑翔目标而建造的。

一些更好的办法是:

  1. Build是一个完全静态的二进制,而不是:这通常可以通过在编译时添加"-static“作为LDFLAGS环境变量的第一个参数来实现。您需要拥有或构建ffmpeg所依赖的所有库的静态版本。有些发行版提供静态库版本,而另一些发行版则不提供静态库版本,因此,请准备自己构建所有库。生成的二进制文件将包含绑定的所有依赖项,并且应该在任何地方运行(1)

  1. Install/Build软件在chroot 下:您可以安装一些发行版的最小色度,并在那里构建所需的所有内容。然后你可以在其他机器周围移动色度,它应该可以在任何地方工作(1)。下面是获取最小Gentoo色度的说明:https://wiki.gentoo.org/wiki/Chroot

  1. Attempt使用ELF工具:这些工具并不总是适用于所有应用程序,但值得一试。他们将执行脏的工作来查找所有共享的lib依赖项,并将它们绑定到一个二进制文件:http://statifier.sourceforge.net/

中。

(1) -任何地方都意味着与您的构建机器相同的arch和相同或更高的内核版本。如果您想更进一步,创建一个与(很多)旧内核兼容的静态二进制文件,您还需要构建glibc设置“-启用-内核=版本”配置开关。

票数 1
EN

Stack Overflow用户

发布于 2021-03-15 07:15:48

似乎您只是想有某种离线文件在机器之间来回移动。你考虑过使用snap吗?

您可以使用以下命令在一台计算机中下载快照:

代码语言:javascript
运行
复制
snap download ffmpeg

这将生成2个文件,要安装在另一台机器上,只需复制它们,然后运行:

代码语言:javascript
运行
复制
  snap ack ffmpeg_1286.assert
  snap install ffmpeg_1286.snap
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66627511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档