qt交叉编译常见问题及解决方法

交叉编译实践-Qt应用程序交叉编译【用cmake工具编译】 上篇介绍了交叉编译的基本原理,以及交叉编译一个简单的HelloWorld程序,这篇将介绍如何交叉编译Qt程序。 由于Qt程序依赖的底层以及第三方的相关库太多(比如libGL.so库为OpenGL库,libX11.so库为系统图像库等等),因此在交叉编译时会出现各种问题,下面将其主要的问题归为如下三类: 1. 编译器所依赖的库,在编译链接过程中,找到了宿主机的库了,导致文件格式不对,编译链接不成 阅读详情

http://shashanzhao.com/archives/971.html

问题: libQtCore.so: undefined reference to `clock_gettime'
分析: 应该是找不到库文件  librt.so (POSIX.1b Realtime Extensions library)
解决: 
    办法一: 重新编译qt4.5
                  在./configure后 添加参数 -lrt 
                  我用的是天嵌embeded,修改arm_qt4.5_build,如下:
echo yes | ../../qt-embedded-linux-opensource-src-4.5.0/configure -prefix /opt/EmbedSky/qt-4.5/__install/arm/ -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libjpeg -make libs -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -armfpa -no-mouse-tslib -I/tslib-1.4/inclued -L/tslib-1.4/lib -lrt &&

    办法二: 修改Makefile
                  在makefile中找的   LIBS    ,在其后添加 -lrt

可能出错1:


libQtCore.so: undefined reference to `QInotifyFileSystemWatcherEngine::create()'

解决办法:
vi ./src/corelib/io/io.pri
find linux-*:
append your cross-toolchain's prefix after it

举例:
my toolchains's prefix is arm_xxxxx
so....
68        linux-*|arm-linux-*:{            //该行改为
69             SOURCES += \
70                     io/qfilesystemwatcher_inotify.cpp \
71                     io/qfilesystemwatcher_dnotify.cpp
72 
73             HEADERS += \
74                     io/qfilesystemwatcher_inotify_p.h \
75                     io/qfilesystemwatcher_dnotify_p.h
76         }
注意:更改后,要重新编译QT



可能出错2:


libQtCore.so: undefined reference to `clock_gettime'

解决办法:
LFLAGS 编译选项中添加 -lrt
append "-lrt" parameters after the "./configure" so that the compiler can find the define in librt.


可能出错3:
{standard input}: Assembler messages:

{standard input}:778: Error: register or shift expression expected -- `orr r3,r2,lsl#16'

{standard input}:789: Error: register or shift expression expected -- `orr r2,r3,lsl#16'

{standard input}:7748: Error: register or shift expression expected -- `orr r3,r0,lsl#16'

{standard input}:7761: Error: register or shift expression expected -- `orr r1,r0,lsl#16'

make[1]: *** [.obj/release-shared-emb-arm/qfontengine_ft.o] Error 1

make[1]: Leaving directory `/home/lijian/QT/build/3.4.1gcc/qt-embedded-4.6.2/src/gui'

make: *** [sub-gui-make_default-ordered] Error 2

解决办法:

To fix this issue patch /src/3rdparty/freetype/include/freetype/config/ftconfig.h Line 330.

"orr %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */

to "orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */

PS: 都说是交叉编译器版本问题,用4.5.1就好了... 没试过...



可能出错4:

In file included from ./config.h:26,

from ../JavaScriptCore/pcre/pcre_compile.cpp:44:

../JavaScriptCore/wtf/Platform.h:338:6: #error "Not supported ARM architecture"

make[1]: *** [obj/release/pcre_compile.o] Error 1

make[1]: Leaving directory `/usr/local/qte4.6-arm/src/3rdparty/webkit/WebCore'

make: *** [sub-webkit-make_default-ordered] Error 2

解决办法:

在参数上加 -D__ARM_ARCH_5TEJ__ 或者 -D__ARM_ARCH_4T

或者修改src/3rdparty/webkit/WebCore/Makefile,在cflags中加入-D__ARM_ARCH_4T__ 修改src/script/Makefile,同上

可能出错5:

./configure中选中的是-xplatform qws/linux-arm-g++, 但是在编译时,却采用的x86-g++,

刚开始编译时,是采用的主机的g++,后面编译时才是调用的linux-arm-g++,这里并没有出错,请耐心等待。


可能出错5:

warning: libts-0.0.so.0, needed by , not found (try using -rpath or -rpath-link)

undefined reference to `ts_read_raw'

undefined reference to `ts_open'

undefined reference to `ts_fd'

undefined reference to `ts_config'

undefined reference to `ts_close'

undefined reference to `ts_read'

collect2: ld returned 1 exit status

解决办法:

修改qt-everywhere-opensource-src-4.6.0/mkspecs/qws/linux-arm-g++/qmake.conf 文件(添加lts参数):

QMAKE_CC                = arm-linux-gcc -lts

QMAKE_CXX               = arm-linux-g++ -lts

QMAKE_LINK              = arm-linux-g++ -lts

QMAKE_LINK_SHLIB        = arm-linux-g++ -lts

还有个错误是加了-pch 参数引起的,具体错误内容忘了。

另外一定要在编译之前确认arm-linux-gcc等环境在当前shell下是否有效,如果出错最好拿一份新的源码再去编译,之前就是因为没有换而浪费了很多时间。

  1. ../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h: Assembler messages:  
  2. ../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h:131: Error: no such instruction: `swpb %cl,%dl,[%ebp]'  
  3. ../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h:131: Error: no such instruction: `swpb %dl,%sil,[%ebp]'  

解决方法:

[html]  view plain copy
  1. inline char q_atomic_swp(volatile char *ptr, char newval)  
  2. {  
  3.     register char ret;  
  4. /*    asm volatile("swpb %0,%2,[%3]"  
  5.                  : "=&r"(ret), "=m" (*ptr)  
  6.                  : "r"(newval), "r"(ptr)  
  7.                  : "cc", "memory");  
  8. */  
  9.     ret=*ptr;  
  10.     *ptr=newval;  
  11.   
  12.     return ret;  
  13. }  
  14.   
  15. 和  
  16.   
  17. inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)  
  18. {  
  19.     int originalValue;  
  20. #ifndef QT_NO_ARM_EABI  
  21. /*    asm volatile("swp %0,%2,[%3]"  
  22.                  : "=&r"(originalValue), "=m" (_q_value)  
  23.                  : "r"(newValue), "r"(&_q_value)  
  24.                  : "cc", "memory");  
  25. */  
  26.      originalValue=_q_value;  
  27.      _q_value=newValue; 
  28. 以上内容转载自  http://blog.chinaunix.net/uid-29513507-id-4234035.ht
自动驾驶开发入门(一)---交叉编译64位Qt5.15 (aarch64) 零:准备开发环境 1、 开发PC安装Ubuntu1804/1604 2、好交叉编译工具链 工具链一般随开发板提供,各官网也可下载。请按官方文档安装配置。 NVIDIA Xavier、华为MDC系列、 TI TDA4VM 配置方法大同小异。 一、下载Qt源代码 建议选择国内镜像,速度较快: http://mirrors.ustc.edu.cn/qtproject... 阅读详情

相关推荐

QT远程调试

目标板: CPU:V3s 系统:linux4.14-y qt移植:buildroot构建 qt5.2 PC: 系统:ubuntu16.04 qt开发工具: qt-creator 一、环境搭建 buildroot配置: 1、勾选gdb(qt调试需要用): 2、勾选qt5 3、目标板qt与gdb测试 gdb测试(如下表示成功): # gdbserver 192.168.1.105:...

Yfw的博客 2539

QT 错误 ASSERT: “d“

Qt: Untested Windows version 10.0 detected! ASSERT: “d” in file …\include/QtCore/…/…/src/corelib/tools/qscopedpointer.h, line 112 14:47:42: E:/codepro/qtpro/qt_testing/build-test2-Desktop_Qt_5_4_2_MinGW_32bit-Debug/debug/test2.exe exited with code 3 解决 查看是

时越的博客 2465

poppler交叉编译

  公司某嵌入式设备使用Qt5.5开发,需要有显示pdf文档的功能,此版本的Qt自身不支持pdf的解决方案(Qt wiki中有提到pdf的处理实现:Handling PDF)。通过比较觉得poppler比较适合,下面是交叉编译的过程。 环境 硬件环境:iMX6 交叉编译工具链:arm-poky-linux-gnueabi gcc版本为 4.6.2 软件环境:Linux+Qt5.5.1...

SealedGhost的专栏 2728

qt creator 交叉编译_编译QT库遇到的问题及解决

主机平台: UBUNTU14.04硬件平台:明远智睿MY-IMX6-EK200-6Q-1G内核版本 :linux-3.0.35交叉编译链:arm-fsl-linux-gnueabi运行run.sh脚本文件生成Makefile时,出现错误:错误:The tslib functionality test failed! 查看run.sh设置的tslib路径是正确的,后将/home/myz...

weixin_39916681的博客 634

解决Qt提示xxx.so not found( using -rpath or -rpath-link)问题

上述问题虽然说的很明白,try using -rpath or -rpath-link,要使用rpath指定so动态库的位置。可是,在QtCreator里面,我上哪去指定so的位置呢?这里so文件可以通过源码编译或者直接下载的方式搞到。我这里是aarch64,其他环境类似即可。可以在项目的编译参数里面加入。但这样子,似乎不够通用。

有问题或资源连接有缺失的可以私信公众号新潮看世界获取 1361

基于Ubuntu系统搭建Qt和aarch64交叉编译环境的详细指南

本文档详细介绍了在Ubuntu系统上搭建aarch64架构Qt开发环境的完整流程。主要内容包括:1)交叉编译工具链的安装与配置(基础工具链和可选预编译版本);2)Qt源码的下载、编译参数配置及安装步骤;3)Qt Creator集成配置方法(编译器添加、Qt版本设置和Kits创建);4)环境变量设置与依赖库处理;5)测试程序编译、验证和部署流程;6)常见问题解决方案。通过逐步操作指南和参数说明,帮助开发者快速构建适用于aarch64平台的Qt开发环境,并解决GLIBC版本不匹配等典型问题。

半青年的博客 1203

编译可移植到arm上的qt程序错误分析

qmake -project qmake make 不成功, g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/QtEmbedded-4.8.1-arm/mkspecs/linux-g++ -...

diaxfw2168的博客 297

瑞萨单片机,把CS文件转换为CC

1、打开CC的软件: 点击坐上角的"START" 点击"Create New Project"的"GO": 导入工程: 如下图设置后,点击"Create" 2、进入到CC的开发界面: 可以看到原启动库文件以asm文件的方式直接出现在工程中: 删除新生成的main.c,保留导入的r_main.c(以你自己的代码为准): 注意添加所有的头文件路径: 点击"...

weixin_37611121的博客 1228

在嵌入式Linux下如何用QT开发UI

在嵌入式 Linux 环境下使用开发用户界面 (UI) 是一个常见的选择。Qt 提供了丰富的功能、跨平台支持以及优秀的图形界面开发能力,非常适合用于嵌入式系统。

zyy29182918的博客 3217

TikTok滑块验证码verifyV2逆向实战:从fp生成到captchabody加密的完整流程解析

本文详细解析了TikTok滑块验证码verifyV2的逆向工程全流程,从fp参数生成到captchabody加密机制,涵盖了验证码触发、WASM解密、轨迹模拟等关键技术点。通过实战案例和代码示例,帮助开发者深入理解反爬机制,提升逆向工程能力,应对复杂的验证挑战。

weixin_28568819的博客 477

机器视觉避坑指南:为什么你的Halcon划痕检测总漏检?(附优化方案)

本文深入剖析了Halcon在表面划痕检测中漏检率高的常见原因,如灰度值波动、噪声干扰及形态学参数设置不当。针对复杂背景与低对比度划痕,提出了超越官方例程的多尺度纹理分析与特征融合优化方案,旨在帮助开发者构建更鲁棒、稳定的机器视觉检测流程,有效提升检出率。

weixin_29057163的博客 234

linux交叉编译mesa,交叉编译Mesa,X11lib,Qt opengl

记录Mesa配置文件如下:Mesa版本:Mesa-10.2.3CC=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-gcc CXX=/usr/local/arm-4.8.1/bin/arm-none-linux-gnueabi-g++ ./configure --prefix=/home/work/DownLoad/Mesa --target=arm...

weixin_42515364的博客 828

SAC安装与相关库文件(.so)的安装

摘要 SAC: Seismic Analysis Code 是用于地震信号处理的一套软件。 本文将介绍SAC的安装,以及安装时遇到的一些问题。主要是一些动态库(lib**.so)找不到的问题。 本文的环境 64位的 Ubuntu 16.04 64位的系统是安装出现问题的主要原因 1. SAC获取与安装 SAC 的安装,只需要解压,然后修改环境变量即可!!!不需要任何编译!!! 1.1. SAC 获取与解压 SAC软件获取地址:http://ds.iris.edu/ds/nodes/dmc/forms/s.

WangCY的博客 4334

Qt 源码编译

1、背景 2、修改qmake.conf文件 3、根据configure的选项,将编译选项设置用脚本罗列出来 ./configure --help,将所有的configure的选项都罗列出来 3.1顶层安装目录 -prefix 部署目录,make install的部署目录,若未指定则默认在/usr/local/Qt-$QT_VERSION -extprefix 安装目录,若未指定,则默认安装SYSROOT/PREFIX -hostprefix 主机上运行的构建工具安装目录,,若未指定

zhejfl的博客 1万+

用4690张图片搞定物流仓储难题:手把手教你训练YOLOv8纸箱检测模型(附完整源码)

本文详细介绍了如何利用YOLOv8目标检测技术解决物流仓储中的纸箱识别难题。通过4690张图片构建高质量数据集,提供完整的训练教程和源码,实现98.7%的mAP@0.5准确率。文章涵盖数据采集、模型训练、调参技巧到边缘计算部署的全流程,帮助读者快速构建智能仓储检测系统。

weixin_28717939的博客 377

先楫HPM6E00EVK EtherCAT从站配置与CIA402 8轴运动控制实战解析

本文详细解析了先楫HPM6E00EVK开发板的EtherCAT从站配置与CIA402 8轴运动控制实战。从环境准备、XML文件配置、代码移植到TwinCAT工程设置,提供了完整的移植指南,帮助开发者实现高效的多轴同步运动控制。

o5p6q的博客 415

树莓派+Qt5.9.9 交叉编译

转载树莓派+QT5.9.9交叉编译,100%可以使用的交叉编译 感谢原文作者:SimbaHiker 第一部分 系统编译 第一步: 清单 Rufus:https://github.com/pbatard/rufus/releases/download/v3.17/rufus-3.17.exe VMware: 15.5.6 Ubuntu 14.04 64bithttps://releases.ubuntu.com/trusty/ubuntu-14.04.6-desktop-amd64.is...

yutao1131的博客 1235

韩版传奇 2 源码分析与 Unity 重制(一)服务端 TCP 状态管理

该专题将会分析 LOMCN 基于韩版传奇 2,使用 .NET 重写的传奇源码(服务端 + 客户端),分析数据交互、状态管理和客户端渲染等技术,此外笔者还会分享将客户端部分移植到 Unity 和服务端用现代编程语言重写的全过程。本文重点介绍了服务端的启动链路、网络初始化和连接处理这三个过程,并简要分析的游戏循环的实现与数据包处理,在下一篇文章中,我们会从客户端角度分析从游戏启动、登录、游戏开始和基础游戏交互的全流程。

东方猫的博客 2497

Qt And Openssl交叉编译

1. Openssl交叉编译 Openssl交叉编译 2. Qt交叉编译链接Openssl Qt的交叉编译参考Qt交叉编译,只是需要修改一下configure的配置参数,具体配置如下: #!/bin/sh OPENSSL_LIBS='-L/home/pgs/openssl102_Arm/lib -lssl -lcrypto' \ ./configure \ -openssl-linked \ -I/home/pgs/openssl102_Arm/include \ -L'/home/pgs/op

潘森的博客 1774

ABAP CDS 货币与计量单位换算全攻略:CURRENCY_CONVERSION、UNIT_CONVERSION 与 DECIMAL_SHIFT 的工程化实践

本文介绍了SAP ABAP CDS中三种单位/货币换算函数(UNIT_CONVERSION、CURRENCY_CONVERSION、DECIMAL_SHIFT)的实战应用。重点包括:各函数的职责边界与适用场景,参数配置与精度控制策略,以及基于标准表(T006、TCUR*等)的换算规则来源。文章提供可运行的CDS示例,涵盖单位换算(如MI转KM)、货币汇率转换(含小数位处理)及纯小数位调整等典型场景,并强调生产环境中需注意的精度差异与审计风险控制。适用于企业报表、成本核算等需要统一口径的业务场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1554

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

树莓派学习::qt5.10.1交叉编译【带opengl ES2】(armv8 64位)

测试环境(与树莓派学习::qt5交叉编译(armv8 64位)一致) (1)硬件设备 msi笔记本,I7-4710H,16G内存 树莓派3b+,armv8(64位),16Gsd卡 (2)系统环境 笔记本:ubuntu16.04 x64位 树莓派3b+:debian9 x64位 建议 :如果要交叉编译 32位的程序,笔记本系统最好用32位,相反,如果要交叉编译出64位程序,笔记本系统 用64位,这样...

qq_43248127的博客 3414

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

树莓派Bookworm 64位系统下Qt应用交叉编译依赖库获取与部署指南

摘要:在Ubuntu上通过qmake交叉编译Qt应用(如example)并部署到树莓派Bookworm 64位系统时,需通过交叉工具链的sysroot目录识别依赖库,并利用Ubuntu的多架构支持安装ARM64版本依赖包(如libqt5widgets5:arm64)。使用aarch64-linux-gnu-ldd --sysroot分析依赖关系,收集库文件后打包部署至树莓派,通过设置LD_LIBRARY_PATH确保运行时链接正确。关键步骤包括配置交叉编译环境(指定sysroot路径)、验证库架构兼容性(f

tkdsy007的博客 1253

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

QT5.8交叉编译-arm架构运行!包含触摸屏tslib配置

本来没想弄那么高的版本,一般嵌入式设备都是追求稳定并不是高版本,一般情况都是QT都是4.8版本的。但是之前群里面有小伙伴竟然不会弄,我就开始了交叉编译之路。猛然发现还是蛮痛苦的,用时5天,版子成功运行。目前发现了1个问题我处理不了,就是隐藏鼠标指针。弄的明白的回复一下吧,求小伙伴们帮忙吧!授之以鱼不如授之以渔,特别具体的流程请自行体会吧。 一 )准备工具。 1)QT 源码  下载地址: ht...

CLP的博客 2253

qt5.7交叉编译gstreamer-1.0

一、交叉编译glib 1.提前需先交叉编译libffi CC=/home/mjl/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-gcc ./configure --prefix=/home/mjl/build/libffi-3.2.1/install/arm/ --host=arm-linux-gnueabihf 2.提前需

xueyeguiren8的博客 4809

mini2440移植Qt4.6.3过程

一般而言,Qt应用程序的内容可分为Qt库的编译,Qt库的移植和基于Qt的应用程序的移植。Qt库的编译所花费的耗线性时间代价是最长的,而Qt库的移植是比较简单的一个工作,只需要让串口发送数据到开发板上即可,笔者本人使用的是虚拟机提供的一个共享工具 wmwate-tools,在拷贝某些库的时候会出现不可以预知的错误,重试也无法解决这个问题,解决办法在于把库目录打包共享,这样的出错几率会比较低。最后,应用程序的移植,这部分所花费的非线性时间应该是最长的,在移植调试的过程中将会出现很多很多未能预知的问题,详细的解答

天马星空的专栏 893

建立Qt/Embeded交叉编译环境

步骤: 1. 交叉编译需要安装3.4.1的ARM交叉编译器 2. 解压缩文件并要配置好环境变量 tar -xzf tmake-1.13.tar.gz tar -xzf qt-embedded-2.3.10-free.tar.gz export TMAKEDIR=$PWD/tmake-1.13 export QTEDIR=...

weixin_33995481的博客 174
上一篇: 上班两周-离职打算
下一篇: ubuntu 搭建svn服务器
shankusu2017
博客等级 码龄15年 155粉丝 155原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值