Qt ARM+Linux平台调用一个库的时候,报错“Bus error”
Posted DreamLife.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt ARM+Linux平台调用一个库的时候,报错“Bus error”相关的知识,希望对你有一定的参考价值。
Qt ARM+Linux平台调用一个库的时候,报错“Bus error”
文章目录
关键字:
Bus error
、
Qt
、
Arm
、
Linux
、
Debian
内容背景:
最近项目终于切到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上交叉编译wxPython的时候遇到的一个找不到链接库的问题,求解答
记录一个解决Arm Linux端U盘挂载时文件名显示乱码Qt显示乱码的问题