如何在二进制文件中包含共享库依赖项(不使用.deb或.rpm)和/或针对PulseAudio的静态链接

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

本文关键字:rpm deb 静态 链接 PulseAudio 包含 二进制文件 共享 依赖      更新时间:2023-10-16

我在构建用C++编写的命令行工具时遇到了困难,这样它就可以由i386和amd64版本的Ubuntu执行(理想情况下也可以由其他发行版执行,但这并不那么重要)。它将在USB密钥上分发,所以我无法控制包装。

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

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

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

感谢

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

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