在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正确交叉编译?
答案 0 :(得分:2)
对你来说也许为时已晚,但这肯定可以帮助别人。所以,就在这里。
首先,您必须安装正确的工具链(转到终端并输入):
sudo apt-get install mingw32
然后,您需要使用Windows工具链在Ubuntu上编译wxWidgets的“windows”版本。这适用于当前的wxWidgets版本(3.0),但也适用于以前的版本。我还假设:
因此,该过程如下(在终端窗口上):
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可执行文件。