【buildroot 编译qt ERROR: Feature ‘xxxxx‘ was enabled, but the pre-condition ‘YYYYY‘ && ‘ZZZZZ‘ failed】

遇到buildroot编译qt,configure时出错ERROR: Feature ‘xxxxx’ was enabled, but the pre-condition ‘YYYYY’ && ‘ZZZZZ’ failed!

解决方法,在buildroot/package/qt5/qt5base/qt5/qt5base.mk中加上-recheck-all,然后重新编译

make qt5base,根据编译log查看出错原因。我遇到的错误是libpcre2-16.so没有发现,将libpcre2-16.so copy到/buildroot/output/rockchip_rv1126_rv1109_facial_gate/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/下面,重新编译即可。

交叉编译qt5.9 配置选项中添加-tslib时 报错误: ERROR: Feature ‘tslib’ was enabled, but the pre-condition ‘libs.tslib’ failed.

如果你的交叉编译工具链为arm-linux-gnueabihf,那么你编译tslib时,配置的时候注意./configure --host=arm-linux-gnueabihf --prefix=/home/work/lib/tslib。即host=arm-linux-gnueabihf 而不是arm-linux就可以了。

Qt源码编译configure配置参数

ERROR: Feature ‘fontconfig’ was enabled, but the pre-condition ‘!config.win32 && !config.darwin && features.system-freetype && libs.fontconfig’ failed.

是-fontconfig和-qt-freetype不兼容,用了-fontconfig就必须配着-system-freetype,但是用了-qt-freetype的话就会提示上面的错误,所以这个问题的解决就是写-fontconfig -system-freetype就可以了,把-qt-freetype这个配置参数删除掉。

QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed

原因是缺少 iconv 库,解决方案如下:./configure后添加编译-no-iconv

运行时出现错误提示:

Unable to figure out framebuffer device. Specify it manually.
linuxfb: Failed to initialize screen
no screens available, assuming 24-bit color

原因发现是 RK3588 没有 fb,所以不支持 LinuxFB 平台插件。

#error Symbolic function binding on this architecture may be broken, disabling it (see QTBUG-36129).

./configure之后在 config.log 中查找的错误,网上找了下,未找到解决办法,故未解决,也不影响交叉编译成功。

ERROR: Feature 'opengles2' was enabled, but the pre-condition 'config.win32 || (!config.watchos && !features.opengl-desktop && libs.opengl_es2)' failed.

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.

需要先配置 EGL 和 OPENGL ES2 的 include 和 lib 路径才能正常编译。需要修改 qmake.conf:

# tell configure where to find opengl_es2
QMAKE_INCDIR_OPENGL_ES2 = /home/***/work/target/usr/include
QMAKE_LIBDIR_OPENGL_ES2 = /usr/aarch64-linux-gnu
QMAKE_LIBS_OPENGL_ES2 = -lEGL -lGLESv2 -lmali

# tell configure where to find egl
QMAKE_INCDIR_EGL = /home/***/work/target/usr/include
QMAKE_LIBDIR_EGL = /usr/aarch64-linux-gnu
QMAKE_LIBS_EGL = -lEGL -lGLESv2 -lmali

gcc 编译程序错误: as: unrecognized option ‘–64‘
解决方案:gcc 编译程序错误: as: unrecognized option ‘–64‘

使用kms_mali插件,运行会报错,打开 export QT_DEBUG_PLUGINS=1,报错如下:

QFactoryLoader::QFactoryLoader() checking directory path "/opt/demo/egldeviceintegrations" ...
loaded library "/opt/qt5122_rk3588_eglfs_mali/plugins/egldeviceintegrations/libqeglfs-mali-integration.so"
Failed to open fb to detect screen resolution!
Could not get variable screen info
Unable to set double buffer mode! (Bad file descriptor)
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.

提示 eglfs_mali 依赖 fb。

undefined symbol: gbm create device

拷贝了一个正常的libmali.so libmali.so.1到/usr/lib才解决:undefined symbol: gbm create device

/usr/bin/ld.gold: fatal error: verifyspec.o: unsupported ELF machine number 183
collect2: error: ld returned 1 exit status
Makefile:68: recipe for target ‘verifyspec’ failed
make: *** [verifyspec] Error 1
Note: Also available for Linux: linux-clang linux-icc

ERROR: Cannot compile a minimal program. The toolchain or QMakeSpec is broken.
只能换个 Ubuntu 虚拟机来交叉编译,可能是原主机的环境有问题,暂时没能彻底解决。

qt.qpa.egldeviceintegration: Failed to load EGL device integration "eglfs_kms"

解决:将 eglfs_kvm 改为 eglfs_none

undefined symbol: gbm create device
arm_release_ver of this libmali is 'g2po-01eac0',rk_so_ver is 6'.
Fai1ed creating base context during opening of kerneT driver.
Kerne1 module may not have been loaded
could not initiaiize egl display

上面两个报错,都是由于给的 libmali.so.1 库不对,将提供的 deps 目录下的 libmali.so、libmali.so.1 拷贝到 /usr/lib 下即可解决。

  • 17
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在编写软件项目时,我们通常会使用构建工具来自动化构建过程。构建过程包括编译代码、生成可执行文件或库文件等步骤。然而,在构建过程中可能会遇到错误。在这个具体的问题中,系统提示"error: running build_buildroot failed! error: exit code 1 from line 846"。 这个错误信息表明,在构建过程中运行build_buildroot命令失败,并且错误的发生位置是在第846行。根据提示,我们可以推测可能有以下几种情况: 1. 构建脚本中出现了错误:构建脚本可能包含了错误的逻辑代码或语法错误,导致在运行到第846行时发生错误。我们可以通过检查构建脚本的相关代码来寻找并修复问题。 2. 编译器或构建工具问题:在构建过程中使用的编译器或构建工具可能存在问题,导致在运行build_buildroot命令时失败。我们可以尝试升级或切换构建工具的版本,或者在网络上搜索该错误信息,看看是否有其他用户遇到过相似的问题并解决了。 3. 系统环境配置问题:有时候,错误可能是由于系统环境配置不正确或缺少依赖项而引起的。我们可以检查当前系统的依赖项和环境变量,确保它们符合构建要求。 解决此问题的具体方法可能因具体情况而异。重要的是要仔细阅读错误信息并尝试通过排除错误的可能原因来解决问题。在出现错误时,我们还可以查看构建日志或搜索相关的错误信息,以了解其他用户如何解决类似的问题。 ### 回答2: 这是一个构建Buildroot失败的错误。在构建过程中,发生了一些问题导致构建失败并返回了退出码1。具体的错误信息和问题可以通过查看构建日志来确定。 要解决这个问题,首先需要查看构建日志,以了解错误的详细信息。构建日志中可能会提供有关失败的具体原因和位置的信息。根据日志中的错误消息,可以采取相应的措施来解决问题。 常见的构建失败原因可能包括: 1. 缺少依赖项:某些软件包可能需要其他软件包或库的支持。检查构建日志,查看是否有因为缺少依赖项而导致的错误。确保所有依赖项都已正确安装。 2. 配置错误:构建过程中的配置可能存在问题,导致构建失败。检查构建配置文件,确保所有设置正确,并与目标平台和硬件匹配。 3. 兼容性问题:某些软件包可能不兼容目标平台或硬件,导致构建失败。尝试更新软件包版本或查找替代的软件包,以解决兼容性问题。 根据具体的错误信息和情况,可能需要进行更深入的调查和分析,以解决构建失败的问题。 ### 回答3: 这个错误提示意味着构建构建目录失败,并且错误代码为1,代码846行出现错误。 造成构建构建目录失败的原因可能有很多,例如: 1. 构建过程中可能发生了编译错误或语法错误,导致构建失败。 2. 执行构建命令时,可能没有正确设置或指定构建目录的路径。 要解决这个问题,可以尝试以下步骤: 1. 检查代码中是否存在语法错误或编译错误,并修复这些错误。 2. 确保已正确设置和指定构建目录的路径。可以查看构建命令或配置文件中相关的配置项是否正确。 3. 检查构建过程中使用的依赖项是否正确安装和配置。有时缺少必要的依赖项也会导致构建失败。 4. 如果以上步骤都没有解决问题,可以尝试使用其他构建工具或方法来进行构建,可能会有不同的结果。 总之,要解决这个错误,首先要确定具体的错误原因,然后采取相应的措施修复错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值