QtEmbedded在MIPS平台编译的一个常见错误
来源:百度文库 编辑:神马文学网 时间:2024/05/23 23:10:53
QtEmbedded在MIPS平台编译的一个常见错误
本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息、原文链接、原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途。 谢谢合作。 原文链接:http://www.cuteqt.com/blog/?p=911错误输出为
libQtWebKit.so: undefined reference to `trunc’
libQtWebKit.so: undefined reference to `lroundf’
libQtWebKit.so: undefined reference to `roundf’
libQtWebKit.so: undefined reference to `lround’
这些函数是定义在Linux下的数学库里的,也就是libm.so或者libm.a。但是有些toolchina在做基本库的时候,并没有把这些函数包括进去,你在Linux Shell命令行下,可以用
$ nm libm.so | grep trunc
或者
$ strings libm.so |grep trunc
查看是否定义了对应的函数。
最直观的解决方法就是重新编译一个带有trunc/roundf这些函数的数学库。也可以造福其它引用libm库的应用或应用框架。
如果你只是编译Qt的话,还有一个解决方法,就是自己去实现这些函数。因为Windows版的数学库就是不带这些函数的,所以Qt的代码里已经自带了这些函数的实现代码。我以QtEmbedded-4.5.2为例,看代码
src/3rdparty/webkit/JavaScriptCore/wtf/MathExtras.h
105 #if COMPILER(MSVC) || COMPILER(RVCT)106107 inline long lround(double num) { return static_cast(num > 0 ? num + 0.5 : ceil(num - 0.5)); }108 inline long lroundf(float num) { return static_cast (num > 0 ? num + 0.5f : ceilf(num - 0.5f)); }109 inline double round(double num) { return num > 0 ? floor(num + 0.5) : ceil(num - 0.5); }110 inline float roundf(float num) { return num > 0 ? floorf(num + 0.5f) : ceilf(num - 0.5f); }111 inline double trunc(double num) { return num > 0 ? floor(num) : ceil(num); }112113 #endif
上面看到的这段代码只在MSVC的情况下可以编译,我们自然可以自己的宏去控制它是否编译了,这个宏可以在qmake.conf里的QMAKE_CXXFLAGS或者QMAKE_CFLAGS环境变量中添加
本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息、原文链接、原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途。 谢谢合作。 原文链接:http://www.cuteqt.com/blog/?p=911
QtEmbedded在MIPS平台编译的一个常见错误
常见的20种VC++编译错误信息
常见的逻辑错误
android 编译错误
解说VC编译中出现的link2001错误
QtEmbedded对内存空间的大小需求
[转载]最常见的20种VC 编译错误信息集合
最常见的20种VC++编译错误信息集合
避免常见错误的原则
练习太极拳的常见错误
新任经理的常见错误
常见的错误吃药方法
买股的常见错误
生活常见的错误习惯
夫妻在性爱中三大常见错误
总有一个错误走在你的前面
男人在爱情中最致命的一个错误
男人在爱情中最致命的一个错误_
C语言编译错误提示
一个美丽的错误
编程-避免六个常见的开发错误
10种常见的蔬菜错误吃法
子女教育中常见的五十个错误
10种常见的蔬菜错误吃法