undefined reference to `typeinfo for QCollectio...

不羁的心 提交于 2019-12-09 11:02:38

今天交叉编译qte应用程序时,遇到下面的编译链接问题:

/tmp/ccWGP9rp.o:(.rodata._ZTI6QGList[typeinfo for QGList]+0x8): undefined reference to `typeinfo for QCollection'
collect2: ld returned 1 exit status
make: *** [hello_qt] Error 1s
一开始以为是qte库的裁剪导致部分特性功能的缺失造成了,可是找了半天也没有找到和QCollection相关的特性红,而且按照qconfig-dist.h配置编译qte库后,问题依旧。后来检查编译选项,是缺少编译选项-fno-rtti导致的,加上就好了。编译命令参考:

arm-hismall-linux-g++ -ohello_qt hello_qt.cpp -DQWS -pipe -fno-rtti -fno-exceptions
选项简要说明:

  • -pipe  使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问题
  • -fno-rtti  不生成带虚拟函数类的运行时类型识别(Run-Time Type Identification)功能(dynamic_cast and typeid)信息,不使用该功能时,使用该选项可以节省空间。
  • -fno-exceptions 关闭异常处理代码的生成,在老的C++代码中没有使用异常处理功能时可以加上该选项

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!