【发布时间】:2019-04-11 21:54:38
【问题描述】:
我正在尝试使用 Crystal 和 libui 创建一个 macOS 应用程序。我能够用所有必需的库静态编译一个水晶可执行文件,因此它可以在任何 mac(部分静态)上运行。出于某种原因,我正在使用的碎片称为“hedron”(libui 的水晶绑定),我无法使用 libui.a 编译程序,就像我正在使用 libevent.a 和 libgc.a 编译我的程序一样。我只能使用 libui.A.dylib 成功构建。
我已将分片的绑定文件的顶部更改为@[Link(ldflags: "#{__DIR__}/../../../../vendor/libui.A.dylib")],并且我正在使用shards build --release --link-flags="-Lpwd/vendor" 编译我的程序。在我的项目的供应商文件夹中,我有 libevent.a、libssl.a、libgc.a、libcrypto.a 和 libui.A.dylib。项目编译正常。然后我运行otool -L ./bin/CrystalDistroTest 并得到以下输出:
./bin/CrystalDistroTest:
@rpath/libui.A.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libpcre.0.dylib (compatibility version 1.0.0, current version 1.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.200.5)
/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
即使我将 libui.A.dylib 复制到 ./bin 目录中,它也不会在其他计算机上启动。它从我的开始,因为我的 /usr/local/lib 目录中有 libui.A.dylib。我的最终目标是将它打包到一个仅用于 macOS 分发的 .app 文件夹中。我应该把 libui.A.dylib 放在哪里,以便我的可执行文件可以找到它?
【问题讨论】:
标签: macos frameworks shared-libraries dynamic-linking crystal-lang