Wxwidgets 在另一台计算机上发出 运行 二进制文件

Wxwidgets issue running binary on another computer

您好,当我在 Linux 上构建我的 wxWidgets GUI 应用程序时,构建进行得很顺利。我什至可以 运行 它并且它按预期工作。当我将二进制文件复制到另一台 Ubuntu 计算机并尝试 运行 它时,我收到此错误:

./app2: error while loading shared libraries: libwx_baseu_unofficial-3.1.so.0: cannot open shared object file: No such file or directory

即使在复制库时我仍然遇到问题。为什么它依赖于外部库,我不希望其他计算机要求安装这个库,我该如何解决这个问题?我想我可以尝试静态 link 它,但其他人建议你不要这样做。

您需要在将二进制文件复制到的任何机器上安装整个 wxWidgets runtime/shared 库。这就是使用 aptitude 的全部要点——每个二进制包都有一个随它一起安装的依赖项列表。

要克服这个问题,您需要静态 link 您的二进制文件。您目前正在使用共享 linking,正如您所注意到的,它依赖于外部库。 “.so”表示共享对象。您将不得不 link 反对静态归档库,通常以“.a”结尾。通常 aptitude 提供的开发包不提供这些,因此您可能必须自己编译 wxWidgets 才能提供这些。只需确保也静态 link 并编译所有 wxWidgets 下游依赖项。这是静态 linking 的主要缺点。

您还可以查看类似 Holy Build Box 的内容。