交叉编译Debian64和Debian Armhf的WxWidget应用程序

时间:2018-07-26 13:44:35

标签: raspberry-pi debian cross-platform wxwidgets

我正在构建一个同时针对Debian 64位和Debian armhf(Raspberry)的WxWidget应用程序。我正在使用eclipse作为在Debian 9.4 Virtualbox中运行的IDE。 VB主机是Windows10。

eclipse工作空间组织为树项目:

  1. 为Debian 64位架构建立的一个项目
  2. 为Debian armhf架构建立的一个项目(使用多体系结构)
  3. 一个具有公共源文件的项目。

在两个64位的armhf项目中,源代码都是从公共项目中链接进来的。

我使用以下命令为64位安装了WxWidgets:

sudo apt install libwxgtk3.0-dev

现在,64位项目可以正确编译,并且可执行文件在Debian64下可以正常工作。

接下来,我想为armhf进行交叉编译,所以

sudo apt install libwxgtk3.0-dev:armhf

现在,armhf项目可以正确编译,并且可执行文件在Raspberry Pi上运行正常。

但是,64位项目的编译被破坏了...

显然,在名为

的文件中定义/声明了WxWidget的特定于平台的设置。
  

setup.h

此文件位于

  

/ usr / lib / 平台 /wx/include/gtk2-unicode-3.0/wx /

其中 PLATFORM 是Debian64的x86_64-linux-gnu或Debian armhf的arm-linux-gnueabihf。

我的观察是,安装一个版本的开发包会安装正确的setup.h,但还会删除另一个版本...

那么,如何为两个平台的多体系结构编译设置WxWidgets?

预先感谢

保罗

2 个答案:

答案 0 :(得分:0)

您需要从armhf存储库中安装wxWidgets,或者使用该体系结构的交叉编译器自己构建它。

我希望当您尝试从其他存储库安装时,安装也将在其他目录中进行。如果不是,则应为apt-get提供脚本要安装软件包的目录。

答案 1 :(得分:0)

原则上,这应该使用--host的{​​{1}}选项起作用,即,想法是将wx-config用于一个平台,将wx-config --host=x86_64 --cxxflags --libs用于另一个平台。但是我不知道这是否适用于Debian软件包。

如果无法使其与它们一起使用,则可以在wx-config --host=armhf~/build/wx/x86_64-gtk2这样的不同构建目录中构建自己的库。然后,您可以只使用~/build/wx/armhf-gtk2而不安装任何库。