您好,当我在 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
即使在复制库时我仍然遇到问题。为什么它依赖于外部库,我不希望其他计算机要求安装这个库,我该如何解决这个问题?我想我可以尝试静态链接它,但其他人建议您不要这样做。
最佳答案
您需要在您将二进制文件复制到的任何机器上安装整个 wxWidgets 运行时/共享库。这就是使用 aptitude 的全部要点——每个二进制包都有一个随它一起安装的依赖项列表。
为了克服这个问题,您需要静态链接您的二进制文件。您目前正在使用共享链接,正如您所注意到的,它依赖于外部库。 “.so”表示共享对象。您必须链接静态存档库,通常以“.a”结尾。通常 aptitude 提供的开发包不提供这些,因此您可能必须自己编译 wxWidgets 才能提供这些。只需确保也静态链接和编译所有 wxWidgets 下游依赖项。这是静态链接的主要缺点。
您还可以查看类似 Holy Build Box 的内容.
关于c++ - Wxwidgets 问题在另一台计算机上运行二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46688008/