2017-10-11 121 views
0

当我在linux上构建我的wxWidgets GUI应用程序时,您好!我甚至可以运行它,并按预期工作。复制的lib即使跨越我仍然得到一个问题Wxwidgets在另一台计算机上运行二进制程序

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

:当我的二进制文件复制到其他电脑的Ubuntu并尝试运行它,我得到这个错误。为什么它依赖于外部库,我如何解决这个问题,因为我不希望其他计算机需要安装这个库。我想我可以尝试静态链接它,但其他人建议你不要这样做。

谢谢 丹

回答

0

你需要你的二进制文件复制到任何一台机器上安装整个wxWidgets的运行/共享库。这是使用aptitude的全部要点 - 每个二进制软件包都有一个随它一起安装的依赖项列表。

为了克服这个问题,你需要静态链接你的二进制文件。您正在使用共享链接,正如您注意到的那样,它依赖于外部库。 “.so”表示共享对象。您必须链接静态归档库,通常以“.a”结尾。典型的aptitude提供的开发包不提供这些,所以你可能需要自己编译wxWidgets来提供这些。只要确保也静态链接并编译所有wxWidgets下游依赖关系。这是静态链接的主要缺点。你可以看看Holy Build Box

+0

感谢您的回复。我想在.deb文件中,我可以要求wxwidgets作为依赖关系来解决问题。 –

+0

它应该确保您编译的版本也在依赖项检查中定义。 –

+0

我已经建立了与自定义编译版本的wxWidgets链接。没有修改,但它所寻找的库是“非官方的”。我将“非官方”库复制到另一台Ubuntu PC上,但系统仍然说库找不到? –

相关问题