从Linux上交叉编译C :: B来赢取错过的wxwidgets代码?

时间:2013-12-30 11:48:26

标签: c++ linux wxwidgets codeblocks

在Ubuntu 13.10,x86上,使用CodeBlocks我已经成功地使用minigw从unix到Windows的交叉编译。在Windows上测试并获得了一个控制台。

它不适用于wxwidgets。在ubuntu下运行正常,但它不会为minigw编译器编译wxwidgets。

我已经完成了这个:Code::Blocks and Cross Compilers和控制台工作

但不适用于wxwidgets。它抛出了一个错误:

-------------- Build: Release in testwindows (compiler: MiniGW compiler for windows)---------------

i586-mingw32msvc-g++ -I/usr/lib/i386-linux-gnu/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread  -Wall  -O2  -DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ -DSTRICT -DHAVE_W32API_H -D__WXMSW__ -D__WINDOWS__   -I/usr/i586-mingw32msvc/include  -c /data1/backup_config/codeblocks/Learn/testwindows/testwindowsApp.cpp -o obj/Release/testwindowsApp.o
i586-mingw32msvc-g++: unrecognized option '-pthread'
In file included from /usr/include/wx-2.8/wx/platform.h:293,
                 from /usr/include/wx-2.8/wx/defs.h:21,
                 from /usr/include/wx-2.8/wx/event.h:15,
                 from /usr/include/wx-2.8/wx/app.h:20,
                 from /data1/backup_config/codeblocks/Learn/testwindows/testwindowsApp.h:13,
                 from /data1/backup_config/codeblocks/Learn/testwindows/testwindowsApp.cpp:10:
/usr/include/wx-2.8/wx/chkconf.h:23:30: error: wx/msw/chkconf.h: No such file or directory

抛出错误时的源代码:

#elif defined(__WXMSW__)
#  include "wx/msw/chkconf.h"
#elif defined(__WXMAC__)

所以,我检查了/usr/include/wx/chkconfig.h上的文件chkconf.h,它存在。但是,默认情况下,代码块会提供给 #include“wx / msw / chkconf.h”

如何解决此问题以使用CodeBlocks和wxwidgets 2.8正确交叉编译?

error example

1 个答案:

答案 0 :(得分:2)

对你来说也许为时已晚,但这肯定可以帮助别人。所以,就在这里。

首先,您必须安装正确的工具链(转到终端并输入):

sudo apt-get install mingw32

然后,您需要使用Windows工具链在Ubuntu上编译wxWidgets的“windows”版本。这适用于当前的wxWidgets版本(3.0),但也适用于以前的版本。我还假设:

  • wxWidgets的源代码安装在主目录中(〜/ wxWidgets-3.0.0)。
  • 目录已准备好将库存储在〜/ LocalLibs / wx-3.0.0_win中。
  • 如果您愿意,可以更改版本/路径,相应地修改以下命令。
  • 已经安装了所有要编译的工具(gcc和库)。

因此,该过程如下(在终端窗口上):

cd ~/wxWidgets-3.0.0
mkdir build_win
cd build_win/
../configure --host=i586-mingw32msvc --build=i586-linux --with-mingw --disable-shared --prefix="$HOME/LocalLibs/wx-3.0.0_win"
make
make install

然后,你可以检查一下是否一切顺利:

"$HOME/LocalLibs/wx-3.0.0_win/bin/wx-config" --host=i586-mingw32msvc --static --cxxflags  --debug=yes --unicode=yes --version=3.0

如果一切正常,它将显示与wxWidgets交叉编译所需的库。

最后,C :: B部分(个人而言,我更喜欢Codelite,但无论如何)。首先,创建一个新的编译器选项(Settings - > Compiler)并复制或重命名其中一个。

然后,转到“工具链可执行文件”并设置如下:

C Compiler:         i586-mingw32msvc-gcc
C++ Compiler:       i586-mingw32msvc-g++
Linker dynamic:     i586-mingw32msvc-g++
Linker static:      i586-mingw32msvc-ar
Resource compiler:  `~/LocalLibswx-3.0.0_win/bin/wx-config --host=i586-mingw32msvc --rescomp`

最后,在“搜索目录”中:

Compiler:       /usr/i586-mingw32msvc/include/
Linker:         /usr/i586-mingw32msvc/lib/
Resource:       /usr/i586-mingw32msvc/include/

我认为这就是全部。之后,您应该能够使用新的交叉编译器使用wxWdigets进行编译,并在Ubuntu中轻松愉快地生成Windows可执行文件。