Qt5.9.8交叉编译到iMX8,需要支持wayland遇到 configure 时 egl 和 eglfs 无法支持

hopease 2023-03-10 08:49:55

configure 时最后提示如下问题(configre 指令及其它信息后续提供):

ERROR: Feature 'egl' was enabled, but the pre-condition '(features.opengl || features.openvg) && (features.angle || libs.egl)' failed.

ERROR: Feature 'eglfs' was enabled, but the pre-condition '!config.android && !config.darwin && !config.win32 && features.egl' failed.

查 config.log 文件, egl 无法支持是因为如下:

looking for library egl
Trying source 0 (type pkgConfig) of library egl ...
+ PKG_CONFIG_SYSROOT_DIR=/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux PKG_CONFIG_LIBDIR=/home/leo/qtSrcCompile/libIns/mtdev/lib/pkgconfig:/home/leo/qtSrcCompile/libIns/zlib/lib/pkgconfig:/home/leo/qtSrcCompile/libIns/SDL2-2.0.14/lib/pkgconfig:/home/leo/qtSrcCompile/libIns/tslib-1.22/lib/pkgconfig:/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/lib/pkgconfig:/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/share/pkgconfig:/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/lib/aarch64-poky-linux/pkgconfig /usr/bin/pkg-config --exists --silence-errors egl
pkg-config did not find package.
  => source produced no result.
Trying source 1 (type makeSpec) of library egl ...
+ cd /home/leo/qtSrcCompile/qt-src-5.9.8/config.tests/egl && PKG_CONFIG_SYSROOT_DIR=/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux PKG_CONFIG_LIBDIR=/home/leo/qtSrcCompile/libIns/mtdev/lib/pkgconfig:/home/leo/qtSrcCompile/libIns/zlib/lib/pkgconfig:/home/leo/qtSrcCompile/libIns/SDL2-2.0.14/lib/pkgconfig:/home/leo/qtSrcCompile/libIns/tslib-1.22/lib/pkgconfig:/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/lib/pkgconfig:/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/share/pkgconfig:/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/lib/aarch64-poky-linux/pkgconfig /home/leo/qtSrcCompile/qt-src-5.9.8/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" 'QMAKE_LIBDIR += /home/leo/qtSrcCompile/libIns/tslib-1.22/lib /home/leo/qtSrcCompile/libIns/zlib/lib /opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/lib64' 'INCLUDEPATH += /home/leo/qtSrcCompile/libIns/tslib-1.22/include /home/leo/qtSrcCompile/libIns/zlib/include /opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/include' "QMAKE_CFLAGS += --sysroot=/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux" "QMAKE_CXXFLAGS += --sysroot=/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux" "QMAKE_LFLAGS += --sysroot=/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux" -early "CONFIG += cross_compile" 'LIBS += -lEGL' /home/leo/qtSrcCompile/qt-src-5.9.8/config.tests/egl
+ cd /home/leo/qtSrcCompile/qt-src-5.9.8/config.tests/egl && MAKEFLAGS= /usr/bin/make
> aarch64-poky-linux-g++ -c -pipe --sysroot=/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux --sysroot=/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux -O2 -march=armv8-a -O2 -march=armv8-a -O2 -w -fPIC  -I. -I/home/leo/qtSrcCompile/libIns/tslib-1.22/include -I/home/leo/qtSrcCompile/libIns/zlib/include -I/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/include -I/home/ecd_1403046_182762140718/source/tslib1.22/include -I/home/ecd_1403046_182762140718/source/sqlite3/sqlite3Ins/include -I/home/leo/qtSrcCompile/qt-src-5.9.8/qtbase/mkspecs/linux-aarch64-gnu-g++ -o main.o main.cpp
> In file included from /opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/include/EGL/egl.h:39:0,
>                  from main.cpp:2:
> /opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/include/EGL/eglplatform.h:144:10: fatal error: X11/Xlib.h: No such file or directory
>  #include <X11/Xlib.h>
>           ^~~~~~~~~~~~
> compilation terminated.
> Makefile:189: recipe for target 'main.o' failed
> make: *** [main.o] Error 1
 => source failed verification.
test config.gui.libraries.egl FAILED
尝试: 在 aarch64 SDK 安装目录中没有找到文件 Xlib.h.

关键是我的 configure 配置是不支持  X11  的,为什么会自动检测用到它?请问大家有没有遇到类似的情况,或者有什么建议?多谢先!

 

configure 指令如下:

./configure -opensource -release --confirm-license -pkg-config \
 -no-use-gold-linker \
 -xplatform linux-aarch64-gnu-g++ \
 -device-option CROSS_COMPILE=/opt/fsl-imx-wayland/4.14-sumo/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux- \
 -sysroot /opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux \
 -nomake examples -nomake tests \
 -prefix /home/leo/qtSrcCompile/libIns/qt5.9.8 \
 -extprefix /home/leo/qtSrcCompile/libIns/qt5.9.8 \
 -hostprefix /home/leo/qtSrcCompile/libIns/qt5.9.8host \
 -shared \
 -c++std c++11 \
 -opengl es2 \
 -pch \
 -make libs \
 -no-gbm \
 -no-glib \
 -qt-libpng \
 -qt-libjpeg \
 -qt-harfbuzz \
 -qt-freetype \
 -tslib \
 -egl -eglfs \
 -no-directfb -no-xcb -no-linuxfb \
 -I/home/leo/qtSrcCompile/libIns/tslib-1.22/include \
 -L/home/leo/qtSrcCompile/libIns/tslib-1.22/lib \
 -I/home/leo/qtSrcCompile/libIns/zlib/include \
 -L/home/leo/qtSrcCompile/libIns/zlib/lib \
 -I/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/include \
 -L/opt/fsl-imx-wayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/lib64
 

对应 eglplatform.h:144 行如下:
#elif defined(__unix__) || defined(USE_X11)

#if defined(EGL_API_DFB)

/* Vivante DFB */
typedef void * EGLNativeDisplayType;
typedef void * EGLNativeWindowType;
typedef void * EGLNativePixmapType;

#elif defined(EGL_API_FB)

/* Vivante FBDEV */
typedef void * EGLNativeDisplayType;
typedef void * EGLNativeWindowType;
typedef void * EGLNativePixmapType;

#elif defined(EGL_API_NULLWS)

typedef void * EGLNativeDisplayType;
typedef void * EGLNativeWindowType;
typedef void * EGLNativePixmapType;

#else

/* X11 (tentative)  */
#include <X11/Xlib.h>
#include <X11/Xutil.h>

typedef Display *EGLNativeDisplayType;
typedef Pixmap   EGLNativePixmapType;
typedef Window   EGLNativeWindowType;

#endif

...全文
64 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hopease 03-10
  • 打赏
  • 举报
回复

补充说明:qtbase/mkspecs/linux-aarch64-gnu-g++/下的 qmake.conf 文件对应的修改也已经做了。

相关推荐
发帖
Qt

1.5w+

社区成员

Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
帖子事件
创建了帖子
2023-03-10 08:49
社区公告
暂无公告