Qt ARM+Linux平台调用一个库的时候,报错“Bus error”

Posted DreamLife.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt ARM+Linux平台调用一个库的时候,报错“Bus error”相关的知识,希望对你有一定的参考价值。

Qt ARM+Linux平台调用一个库的时候,报错“Bus error”

文章目录


关键字: Bus errorQtArmLinuxDebian

内容背景:

最近项目终于切到Linux下开发了,所以最近的记录都是发生在Debian 10 以及Arm Debain 10 下,Qt版本5.12.3。这几天真是问题多多,收获满满,不过目前阶段仅仅停留在解决问题,至于原理性的东西,还得慢慢消化。最近好多问题都是直接群里问大神,感谢各位大神助我成长。

摘要

今天接招早Bug,昨天还好好的,今天把某个功能移植进去,就在Arm上报Bus error错误了,死活不给运行,还好有问题我们可以谷歌,这要是放以前在军工单位写代码,那不得憋死。下面看看吧。

1 字节对齐问题

这个谷歌说有的平台会要求字节对齐的字数,哎,碰巧我就是这个问题,按照这个思路,我开始排查我的代码,因为我知道我的代码中有字节对齐的要求。

#pragma pack(1)

所以就着手准备,开始以为是C++ 和C的问题,在使用

extern "C"


包含后,发现还是不可以,依旧报Bus error错误。

然后我就把#pragma pack(1)从头文件移动到cpp文件中,解决问题。原因我不懂,大神可留言上课。

2内存溢出问题

以下消息来之网络

Linux平台上执行malloc(),如果没有足够的RAM,Linux不是让malloc()失败返回,而是向当前进程分发SIGBUS信号。

不过经过排查,我程序启动时,用到的最大的控件就是一个 200个Double类型的容器,应该不是内存控件问题,同样,有遇到这情况的小伙伴留言。


以上是关于Qt ARM+Linux平台调用一个库的时候,报错“Bus error”的主要内容,如果未能解决你的问题,请参考以下文章

linux下arm平台Qt编译环境搭建与解析

在linux上交叉编译wxPython的时候遇到的一个找不到链接库的问题,求解答

记录一个解决Arm Linux端U盘挂载时文件名显示乱码Qt显示乱码的问题

Arm Qt 实战二:在Arm设备中保存sql数据

arm-linux 程序开发入门(QT窗口应用程序编码交叉编译调试)(三机器和双机器搭建方法)(笔记)

记录一个解决Arm Linux端U盘挂载时文件名显示乱码Qt显示乱码的问题