使用 wxWidgets 库在 linux 中使用 codelite 进行 arm 交叉编译时出错

Posted

技术标签:

【中文标题】使用 wxWidgets 库在 linux 中使用 codelite 进行 arm 交叉编译时出错【英文标题】:error using wxWidgets libraries for arm cross-compilation using codelite in linux 【发布时间】:2013-01-05 12:20:17 【问题描述】:

我已将交叉编译器 arm-linux-gnueabi 添加到 codelite 并成功交叉编译了一个示例 C 程序。

现在我正在尝试交叉编译一个 wxwidget 示例程序。

最初它在 setup.h 中给我带来了错误。

我用 /usr/include/wx/setup.h 为 /usr/lib/wx/include/gtk2-unicode-release-2.8/wx/setup.h 创建了一个链接。现在它给了我大约 159 个错误。我给你一些供你参考。

 /usr/include/wx/defs.h:42:13: error: #error "No Target! You should use wx-config program for compilation flags!"
In file included from /usr/include/wx/cursor.h:24:0,
                 from /usr/include/wx/event.h:22,
                 from /usr/include/wx/wx.h:25,
                 from main.cpp:14:
/usr/include/wx/gtk/cursor.h:40:5: error: ‘GdkCursor’ does not name a type
In file included from /usr/include/wx/app.h:570:0,
                 from /usr/include/wx/wx.h:26,
                 from main.cpp:14:
/usr/include/wx/gtk/app.h:55:5: error: ‘guint’ does not name a type
/usr/include/wx/gtk/app.h:65:5: error: ‘GdkVisual’ does not name a type

当我将wx-config --libs wx-config --cxxflags 添加到我的构建命令中时,它会出现兼容库错误..

这些是我一直坚持的错误..

/usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld:找不到-lwx_gtk2u_richtext-2.8 /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld:找不到-lwx_gtk2u_aui-2.8 /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld:找不到-lwx_gtk2u_xrc-2.8 /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld:找不到-lwx_gtk2u_qa-2.8 /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld:找不到-lwx_gtk2u_html-2.8 /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld:找不到-lwx_gtk2u_adv-2.8 /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld:找不到-lwx_gtk2u_core-2.8 /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld:找不到-lwx_baseu_xml-2.8 /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld:找不到-lwx_baseu_net-2.8 /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld:找不到-lwx_baseu-2.8 collect2: ld 返回 1 个退出状态

我认为我在为交叉编译器链接库时做错了。任何人都可以帮我解决这个问题。我将不胜感激。

-提前致谢

【问题讨论】:

似乎您已经发布了已修复的错误。您应该发布让您陷入困境的错误。 感谢您的建议。我已经编辑了我的问题,其中包含我遇到的错误。希望它能给我一些帮助。 wx_gtk2u_richtext-2.8 等是否存在于任何地方? 在/usr/include/wx/路径下可以看到一个名为richtext的文件夹 这将包含 .h 文件。链接器正在寻找已构建的库。你建立了图书馆吗? 【参考方案1】:

看起来你没有交叉编译 wxWidgets 本身。或者如果你安装了它就没有安装它。

要记住的是,您绝对不需要手动创建任何链接。特别是,你已经为wx/setup.h 制作的那个几乎肯定会破坏你的其他构建,不要这样做。只需使用正确的wx-config 进行交叉构建。

【讨论】:

是的,你是对的。我还没有交叉编译 wxWidgets。我下载了 wxWidgets-2.8.12 并将其配置为 X11 而没有 gtk。现在它给了我错误 ./src/unix/fontenum.cpp:125:22: fatal error: X11/Xlib.h: No such file or directory 编译终止。 make: *** [coredll_unix_fontenum.o] 错误 1 我在使用这些 wxWidgets 库时遇到了困难。希望各位先驱者能帮助我克服它。 我用以下配置选项编译了 wxwidgets,它给了我以下错误.. 配置 --x-includes=/usr/arm-linux-gnueabi/include --x-libraries=/usr/arm-linux-gnueabi/lib --host=arm-linux-gnueabi --build=i686-linux-gnu --with-x11 --without-gtk --prefix=/usr/arm-linux-gnueabi --enable-no_rtti --enable-no_exceptions --disable-threads --disable-套接字 --disable-joystick --disable-mdi --disable-printarch --disable-postscript --disable-resources --disable-prologio --with-zlib=builtin --with-libpng=builtin --with-libjpeg =builtin --with-libtiff=builtin --prefix=/usr/arm-linux-gnueabi 您可能需要就此提出另一个问题以避免将所有内容混合在一起,但如果您收到有关缺少 X11 标头的错误,您的构建环境显然没有正确设置。您需要确保您的交叉编译器正确找到头文件和库...

以上是关于使用 wxWidgets 库在 linux 中使用 codelite 进行 arm 交叉编译时出错的主要内容,如果未能解决你的问题,请参考以下文章

wxWidgets 在 Linux 下开发环境配置

如何使用 wxMediaCtrl 在 wxwidgets 中播放 SWF 文件

在Code::Blocks中编译和使用wxWidgets3.0.0教程

描述wxWidgets中事件处理的类型转化

wxWidgets源码分析 - wxString

Linux下C/C++动态库在运行时是怎样加载进来的