如何在我的二进制文件中包含共享库依赖项(w/o 使用 .deb 或 .rpm),and/or 静态地 link 针对 PulseAudio?

How do I include shared-library dependencies with my binary (w/o using a .deb or .rpm), and/or statically link against PulseAudio?

我在构建一个用 C++ 编写的命令行工具时遇到了困难,因此它可以由 Ubuntu 的 i386 和 amd64 版本执行(理想情况下其他发行版也是如此,但事实并非如此很重要)。它将通过 USB 密钥分发,因此我无法控制包装。

我的命令行工具也应该从缓冲区播放一些音频,所以我使用 PulseAudio Simple 来播放音频缓冲区。

请注意,我的可执行文件 运行 在我的开发机器上运行良好。当我将它复制到 USB 密钥上并 运行 它在其他机器上时出现问题。在那里,一旦我启动我的可执行文件,我就会从 bash 收到 "File not found" 错误;据我所知,这应该是因为目标机器上缺少 libpulse-dev 包(以及动态链接的库)。

所以,我想问一下:我应该做什么?我试图构建一个 32 位静态 PulseAudio,但后来我什至无法编译它,老实说我不知道​​还能尝试什么。除了静态链接之外,还有其他方法可以在 USB 密钥中使用我的应用程序部署共享库吗?

谢谢

  1. 请在存储棒上包含所有相关的共享库。为此,运行 ldd your_app 获取相关库的列表。
  2. 制作更可取的 POSIX shell 脚本来调用您的应用程序

  3. 在脚本中通过适当设置 LD_LIBRARY_PATH 指向您的库