【问题标题】:How can I compile unix program and its dependencies into one single executable on Mac OS X?如何在 Mac OS X 上将 unix 程序及其依赖项编译成一个可执行文件?
【发布时间】:2012-01-06 19:48:26
【问题描述】:

在我从终端输入brew install pianobar 安装pianobar 后,我可以完美地从终端运行它。

我转到/usr/local/Cellar/pianobar/2011.11.11/bin 并将钢琴条可执行文件复制到我的桌面。当我双击它时它也可以工作。

然后我复制到我的另一台非开发 Mac(未安装 Xcode)并尝试执行它,它显示 dyld: Library not loaded: /usr/local/lib/libao.4.dylib

我知道pianobar有这样的依赖:

depends_on 'libao'
depends_on 'mad'
depends_on 'faad2'
depends_on 'gnutls'

这些依赖项动态链接到我的第一台 Mac 上的可执行文件,因此如果尚未安装这些依赖项,pianobar 将无法在另一个 Mac 上运行。

我的问题是:如何将所有这些依赖项编译到一个可执行文件中,以便可以轻松地将其分发到我的另一台 Mac?

【问题讨论】:

  • 好吧,你静态地链接它们。你在哪里卡住了?
  • 是的! @dmckee 的评论。将鼠标悬停在每个标签上,然后查看关注者数量。如果您使用 make 或 gmake 之类的标签(是否有针对 osx 的特殊 make 程序?),您将更加关注您的问题。祝你好运。

标签: macos unix compilation terminal


【解决方案1】:

有多种方法可以实现,但可能过于复杂,例如:

  • 创建一个 MacOS X 安装程序包(使用 PackageMaker.app)并确保所有库都在其中
  • 手动构建所有内容并以 ZIP 格式分发

只需在第二台 Mac 上安装 homebrew 并在那里安装钢琴吧。

【讨论】:

  • 谢谢。这些是选项。但就像我说的,我想将所有这些依赖项编译成一个 FAT 可执行文件? (比动态链接可执行文件更胖)。结果应该是可执行文件,而不是 .app、Zip 或其他文件。
猜你喜欢
  • 2011-02-18
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-08
  • 1970-01-01
  • 2011-04-17
  • 2016-12-27
相关资源
最近更新 更多