为 Nitrogen6x 构建 Qt 5 时出现 libm 重定位错误

2023-12-12

我正在尝试在 Qt 5 上构建氮气6x板由 *i.MX6Q` 供电。

我已经安装了Debian/喘息在板上,我正在使用乌班图12.10交叉编译机。

配置 Qt 就像一个魅力,但我陷入了 make 步骤。 这是我运行的配置脚本:

./configure -v -opensource -confirm-license  -reduce-relocations -no-pch -no-xcb -no-opengl -opengl es2  -qt-libpng -qt-zlib -qt-xkbcommon -qt-xcb -qt-pcre -qt-libjpeg -qt-sql-mysql -optimized-qmake\
   -make libs -device imx6 \
   -compile-examples   \
   -device-option CROSS_COMPILE=/home/finn/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabi- \
   -sysroot /media/finn/d72e3b65-b529-4e5c-9d30-872e1b0c9973 \
   -prefix /opt/qt5

这是我在 make 过程中大约 5 分钟收到的错误:

/home/finn/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: 
/media/finn/d72e3b65-b529-4e5c-9d30-872e1b0c9973/usr/lib/libm.a(mpa.o): relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/media/finn/d72e3b65-b529-4e5c-9d30-872e1b0c9973/usr/lib/libm.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status

我之前遇到过同样的错误,当它尝试访问 libz.a 时,但将 qt-zlib 参数添加到配置命令中修复了该问题。

许多文章指出应该重新编译受影响的应用程序/库,但我认为这是不可能的,因为 libm 是 libc6 的一部分。

我已经尝试使用重新安装它aptitude remove libc6-dev zlib1g-dev g++-4.6 and apt-get install gcc g++ make flex bison openssl libssl-dev perl perl-base perl-modules libperl-dev build-essential

遗憾的是这并没有解决问题。

Debian 已使用官方网络安装程序以及主板制造商 Boundarydevices 提供的内核和覆盖层进行安装。

有谁知道如何解决这个问题?

我的下一步是安装一个全新的 Debian 系统,但我真的想避免这种情况。

Edit

使用 -static 选项编译 qtbase 对我有用,但是在 make 步骤期间尝试构建 qtdeclarative 时遇到此错误:

    /home/finn/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find crt1.o: No such file or directory
/home/finn/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find crti.o: No such file or directory
/home/finn/qt/qtbase/lib/libQt5Core.a(qlibrary_unix.o): In function `QLibraryPrivate::load_sys()':
qlibrary_unix.cpp:(.text+0xaac): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/home/finn/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lqxcb
/home/finn/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find /lib/arm-linux-gnueabihf/libpthread.so.0
/home/finn/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find /usr/lib/arm-linux-gnueabihf/libpthread_nonshared.a
collect2: error: ld returned 1 exit status

编辑 2 - 解决方案

我解决了这个问题并成功编译了Qt。 我所需要做的就是重新安装 Ubuntu。这当然不是一个优雅的解决方案,但它对我有用。


有点晚了,但我找到了问题/解决方案:

问题是sysroot。通常 gcc 链接到共享库。但是当它找不到它时,gcc 使用静态库(.a)。当你看进去的时候[sysroot]/usr/lib/arm-linux-gnueabihf共享库不在这个地方。只有符号链接/lib/arm-linux-gnueabihf。因此,gcc 会在您的主机电脑上查找共享库,但它找不到它们。

Solution

创建正确的符号链接。 (这是 libglib 的一个示例,X是版本号)

ln -s [sysroot]/lib/arm-linux-gnueabihf/libglib.so.X \
      [sysroot]/usr/lib/arm-linux-gnueabihf/libglib.so

(不要忘记删除旧的符号链接并在编译成功后创建它;我只是在编译之前执行以下操作:

mv file.so file.so.backup

另一种解决方案

另一个解决方案是将绝对符号链接更改为相对符号链接。 例如,如果您的图书馆是/lib/arm-linux-gnueabihf/libglib.so.X你需要一个链接/usr/lib/arm-linux-gnueabihf/,你只需这样做:

ln -s ../../../lib/arm-linux-gnueabihf/libglib.so.X \
      [sysroot]/usr/lib/arm-linux-gnueabihf/libglib.so
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 Nitrogen6x 构建 Qt 5 时出现 libm 重定位错误 的相关文章

  • 如何在 QTabWidget Qt 中展开选项卡

    我有一个QTabWidget像这个 但我想展开选项卡以 填充 整个小部件宽度 如下所示 我怎样才能做到这一点 我在用Qt 5 3 2 and Qt 创建者 3 2 1 Update 我尝试使用setExpanding功能 ui gt myT
  • 直接在 ARM 目标上调试单声道应用程序

    我最近在 BeagleBone 嵌入式 ARM 设备上安装了 Mono 希望通过 USB 连接 Kinnect 传感器并使用 C Mono 控制它 我想知道 Mono 我正在使用 MonoDevelop 但我想这个问题也适用于 VS 是否允
  • Qt 布局,在小部件大小更改后调整到最小大小

    基本上我有一个QGridLayout里面有一些小部件 最重要的是 2 个标签 我用它们将图像绘制到屏幕上 好吧 如果用户愿意 他可以更改传入图像的分辨率 从而强制标签调整大小 我们假设标签的初始大小是320x240 用户将 VideoMod
  • Qt:测量事件处理时间

    我想测量我的应用程序中的哪些事件在主线程中需要很长时间才能执行 阻塞 GUI 或者至少是否有任何事件花费的时间超过 比如说 10 毫秒 显然 我对需要很长时间的任务使用线程和并发 但有时很难在其他线程中放入的内容和可以保留在 GUI 中的内
  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • 从 Qt4 中的文本文件中逐字读取

    我想在 Qt4 中逐字读取一个文本文件 说实话我对它很陌生 我想在另一个文件中每行一个字写入 我可以在 C 中做到这一点 没有任何问题 但是当我尝试在 Qt4 中使用 ifstream 和 ofstream 时 我遇到了错误 这是我的 Qt
  • QSerialPort 中的 readAll() 不包括最后发送的响应

    我正在使用 Qt 来控制串行设备 如果我向串行设备发送命令 我会执行类似的操作serial gt write command r n 我制作了一个按钮 它将纯文本小部件内的文本更改为串行端口的响应 为了获得串口的响应 我使用serial g
  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • QML 连接:不推荐使用连接中隐式定义的 onFoo 属性

    升级到 Qt 5 15 时收到以下错误消息 QML Connections Implicitly defined onFoo properties in Connections are deprecated Use this syntax
  • 在高 dpi Windows 平台上自动重新缩放应用程序?

    我正在编写一个需要在高 dpi Windows 192dpi 而不是 96dpi 上运行的 Qt 应用程序 不幸的是 Qt 框架尚不支持高 dpi 至少在 Windows 上 因此我的应用程序及其所有元素看起来只有应有尺寸的一半 有没有办法
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 具有许多第三方依赖项的大型跨平台 C++ 项目在磁盘上的物理布局

    我正在重新组织物理 磁盘上 布局大型跨平台 C 项目 https github com jupiter jazz appleseed具有许多第三方依赖项 使用 CMake 构建 由于我们需要支持 Windows 这个平台上没有完善的包管理器
  • Qt - 获取互联网上托管的网页的源代码(HTML 代码)

    我想获取网页的源代码 HTML 例如StackOverflow的主页 这是我到目前为止编写的代码 QNetworkAccessManager manager QNetworkReply response manager get QNetwo
  • 无法解决dll之间的冲突

    我在构建中收到类似于以下内容的警告墙 No way to resolve conflict between Newtonsoft Json Version 7 0 0 0 and Newtonsoft Json Version 6 0 0
  • 将 QByteArray 从大端转换为小端

    我想我在这里有点不知所措 我尝试了这么简单的事情 我不敢相信没有任何内置的 Qt 使用 Qt 5 6 2 我尝试将 QByteArray 内的数据从大端转换为小端 总是从相同的测试 QByteArray 开始 就像这样 QByteArray
  • 有没有什么好的工具可以查看和浏览ant构建文件?

    我发现很难读取 ant 构建文件 特别是如果构建文件包含大量导入文件 例如属性文件和其他 xml 构建文件 因此 我想知道是否有一些好的工具可以提供帮助 例如在 IDE 中查看和浏览源代码 提前致谢 Try 盛大 这里 http www g
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • Renderscript 示例构建错误

    所以我想尝试使用 RenderScript 的示例 并在 Eclipse 中导入了 HelloWorld 但它给了我这样的错误 2011 10 25 13 10 48 HelloWorld home mileoresko workspace
  • ARM NEON 矢量化失败

    我想在 ARM cortex a9 上启用 NEON 矢量化 但在编译时得到以下输出 未矢量化 不支持相关 stmt D 14140 82 D 14143 77 D 14141 81 这是我的循环 void my mul float32 t

随机推荐

  • 这个 Pascal 语法有什么问题?

    我不明白这是怎么回事 你能帮我个忙吗 这是有问题的代码 While not EOF Archi do begin index index 1 Read Archi Alumno index Promes index Alumno index
  • python 中的 urllib2 相当于 ruby

    我在 python 中有一些代码 可以在 python 中发送 http 请求 但我试图弄清楚如何在 ruby 中执行此操作 因为我的服务器是 Rails import urllib2 sys json url http new openb
  • 将本地文件推送到 github 存储库中的目录

    我的本地存储库中有一个文件 我想将其推送到我的 Github 存储库中的目录 我有以下文件 F Development Python Workspace StringCalculator py 我需要将此文件推送到我的存储库的以下路径 ht
  • 尽管存在显式实例化,但类模板的成员函数模板找不到定义。不链接

    Edit 这不是链接问题的重复 因为我使用的是显式实例化 并且只有特定类型的成员函数不链接 其他函数会链接 以下代码可以编译但无法链接 我不明白为什么 它显式实例化Vector类来限制可能的参数数量T因此隐藏了定义Vector
  • SQL Server 2008 Express 无法附加 mdf 文件

    这是消息 它出什么问题了 是安装问题吗 标题 Microsoft SQL Server Management Studio 无法显示请求的对话框 附加信息 参数名称 nColIndex 实际值为 1 微软 SqlServer GridCon
  • Powershell - 根据文件名创建文件夹,然后将该文件放入该文件夹中

    我有一个文件列表说 T123 Product 1 jpg T123 Product 2 jpg T123 Product 3 jpg T456 Product 1 jpg T456 Product 2 jpg T456 Product 3
  • 如何在循环中使用 mutate 和 ifelse?

    我所做的是创建虚拟变量来指示连续变量是超过某个阈值 1 还是低于该阈值 0 我通过几次重复的突变实现了这一点 我想用循环代替 load tidyverse library tidyverse create data data lt data
  • 覆盖 XML 序列化方法

    我在尝试自定义 DateTime 变量在我的对象中序列化的方式时遇到问题 我希望它输出为 2011 09 26T13 00 00Z 但是当我重写 GetObjectData 函数 我认为这是执行此操作的方法 时 根本不会为它们输出任何 XM
  • 带有动态选项组的下拉列表

    嗨 cakephp 专家 我正在寻求您对带有动态 optgroup 的动态下拉列表的帮助 假设我有两个表 countries id country name counties id county name country id 现在 我想显
  • Android-NavigationView从右到左

    我正在使用 Android Studio 1 5 的最新版本 我想使用抽屉布局制作一个菜单 用于定位其调用 GravityCompat 我正在尝试使用这个组件并修改它 将抽屉从右向左放置 这是我的代码 public class MainAc
  • iOS 8 中的 NSDateFormatter 日期格式问题

    我有一个 NSDateFormatter 用来将 NSDate 格式化为字符串 以下格式不起作用 ddMMyyyy hhmmss SSS 当我尝试格式化 NSDate 时 我得到以下输出 18092014 08 49 03 638 其中有一
  • Azure 搜索是否处理同义词

    Azure 搜索 可以根据同义词进行搜索吗 例如 如果我搜索 鞋类 系统应该获取以下结果 鞋类的同义词 如鞋子 凉鞋等 我进行了很多搜索 但未能找到有关它的适当文档 我能找到的最接近的是一个帖子说它还不支持 但这是一个旧帖子 https s
  • 从静态方法调用 startActivityForResult

    我有一个按钮监听器 当用户单击按钮时我想启动相机意图 目前我有这个 public class ButtonListener implements View OnClickListener private ArrayList
  • 在整个页面加载之前显示加载栏

    我想在加载整个页面之前显示一个加载栏 目前 我只是使用了一个小的延迟 document ready function page fadeIn 2000 该页面已使用 jQuery 注意 我已经尝试过这个 但它对我不起作用 脚本运行时加载栏
  • Python“for i in”+变量

    我有以下代码 Euler Problem 1 print We are going to solve Project Euler s Problem 1 euler number input What number do you want
  • 如何在Linux上指定时间运行脚本? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有一个包含特定日期和时间的文本文件 我希望能够在该文件中指定的时间运行脚本 你将如何实现这一目标 创建另一个在后台运行的脚本 类似于守护程序 并每秒检查当前时间是否与文件中的时间匹
  • 将电子邮件另存为 MSG 文件,无需使用 Outlook(COM 对象等)或第 3 方软件

    现在 我正在使用 Exchange Web 服务 API 和 PowerShell 从 Exchange 中提取特定电子邮件并将其保存为 EML 文件 这很好用 但是 用户 客户要求电子邮件采用 msg 格式 我见过有两种方法可以做到这一点
  • 录制时拍摄相机屏幕截图 - 就像 Galaxy S3 一样?

    我正在开发一个使用 SurfaceView 进行显示的相机应用程序 我可以截取 SurfaceView 的屏幕截图 并将其保存为位图 使用 getDrawingCache 在包装 SurfaceView 的布局上 还有canvas draw
  • VBA:等待 Bloomberg BDP 通话完成

    我有一个脚本将一些外部数据导入到工作表中 这反过来会影响一些 BDP 公式 最好 我想在复制数据后立即对 BDP 结果进行一些检查 Bloomberg Excel 插件异步更新 如何等待结果然后恢复脚本 似乎只有在 VBA 脚本完成后才会导
  • 为 Nitrogen6x 构建 Qt 5 时出现 libm 重定位错误

    我正在尝试在 Qt 5 上构建氮气6x板由 i MX6Q 供电 我已经安装了Debian 喘息在板上 我正在使用乌班图12 10交叉编译机 配置 Qt 就像一个魅力 但我陷入了 make 步骤 这是我运行的配置脚本 configure v