Helix移植中的交叉编译的浮点问题
2009-11-25 11:58
471 查看
转载时请注明出处和作者联系方式
文章出处:http://blog.csdn.com/keensword007
作者联系方式:琴剑 <keensword007 at sina dot com>
交叉编译工具链建立后,接下来就是安装Helix构建系统,可以参考文档Getting Started with Helix Source Code on Linux。按照步骤操作,一般不会有问题。
因为是针对moto E6手机,所以SYSTEM_ID环境变量设为linux-2.2-libc6-armv5te-cross-gcc3.3-iwmmxt-softfloat。还需要修改$BUILD_ROOT/umakecf/linux-2.2-libc6-armv5te-cross-gcc3.3-softfloat.cf文件,将如下几行
platform.cc.cmd = 'iwmmxt_le-gcc'
platform.cxx.cmd = 'iwmmxt_le-g++'
platform.link.xplatform = "iwmmxt_le-"
修改为
platform.cc.cmd = 'arm-linux-gcc'
platform.cxx.cmd = 'arm-linux-g++'
platform.link.xplatform = "arm-linux-"
此外,我选择的分支、目标和profile如下,主要目的是测试helix构建环境是否正确:
[0] Set BIF branch (hxclient_3_1_0)
[1] Set Target(s) (common_container_test)
[2] Set Profile (helix-client-all-defines)
进行build后,出现如下错误:
wmmxt_le-g++ -shared hxxml.exp -o iwmmxt-softfloat-dbg/hxxml.so -u RMACreateInstance -u CanUnload -u CanUnload2 iwmmxt-softfloat-dbg/obj/xmldll/xmlccf.o iwmmxt-softfloat-dbg/obj/xmldll/hxexpat/expatprs.o iwmmxt-softfloat-dbg/obj/xmldll/hxexpat/expatapi.o iwmmxt-softfloat-dbg/obj/xmldll/par2/import/expat/xmlparse/xmlparse.o iwmmxt-softfloat-dbg/obj/xmldll/par2/import/expat/xmltok/xmltok.o iwmmxt-softfloat-dbg/obj/xmldll/par2/import/expat/xmltok/xmlrole.o iwmmxt-softfloat-dbg/hxxml_libs.a -lstdc++ -lm -lpthread -ldl
/home/chenzhengyong/ezx-crosstool-0.6/gcc-arm-iwmmxt/gcc-3.3.6-glibc-2.3.2/arm-linux/lib/gcc-lib/arm-linux/3.3.6/../../../../arm-linux/bin/ld: ERROR: iwmmxt-softfloat-dbg/obj/xmldll/xmlccf.o uses FPA instructions, whereas iwmmxt-softfloat-dbg/hxxml.so does not
/home/chenzhengyong/ezx-crosstool-0.6/gcc-arm-iwmmxt/gcc-3.3.6-glibc-2.3.2/arm-linux/lib/gcc-lib/arm-linux/3.3.6/../../../../arm-linux/bin/ld: failed to merge target specific data of file iwmmxt-softfloat-dbg/obj/xmldll/xmlccf.o
上网搜索了相关资料,了解到软件浮点FPA和VFP两种格式,出现这种问题一般是库文件和应用程序所选用的格式不同而造成的。但是本编译过程应用程序和库文件都是使用相同的编译选项从源码编译,按道理不会出现格式不同的问题。使用
arm-linux-objdump -p a.out
命令查看前面编译的helloworld程序,看到如下信息:
private flags = 602: [APCS-32] [VFP float format] [software FP] [has entry point]
看来我编译出的工具链缺省采用VFP soft FP浮点格式。使用如下命令编译应用程序又会是什么结果呢?
arm-linux-gcc -mcpu=iwmmxt -msoft-float hello.c
结果出现如下错误信息:
ERROR: /tmp/cc2D7i8G.o uses FPA instructions, whereas a.out does not
看来我们的交叉编译工具链只能编译出VFP soft FP浮点格式的应用程序,因此,最终的解决办法是去掉-mcpu=iwmmxt -msoft-float编译选项,即修改$BUILD_ROOT/umakecf/
linux-2.2-libc6-armv5te-cross-gcc3.3-iwmmxt-softfloat.cf文件,将
platform.cc.args["default"] = /
"-pipe -W -Wreturn-type -fno-exceptions " /
"-mcpu=iwmmxt " /
"-msoft-float"
修改为:
platform.cc.args["default"] = /
"-pipe -W -Wreturn-type -fno-exceptions "
再次执行build,成功!
文章出处:http://blog.csdn.com/keensword007
作者联系方式:琴剑 <keensword007 at sina dot com>
交叉编译工具链建立后,接下来就是安装Helix构建系统,可以参考文档Getting Started with Helix Source Code on Linux。按照步骤操作,一般不会有问题。
因为是针对moto E6手机,所以SYSTEM_ID环境变量设为linux-2.2-libc6-armv5te-cross-gcc3.3-iwmmxt-softfloat。还需要修改$BUILD_ROOT/umakecf/linux-2.2-libc6-armv5te-cross-gcc3.3-softfloat.cf文件,将如下几行
platform.cc.cmd = 'iwmmxt_le-gcc'
platform.cxx.cmd = 'iwmmxt_le-g++'
platform.link.xplatform = "iwmmxt_le-"
修改为
platform.cc.cmd = 'arm-linux-gcc'
platform.cxx.cmd = 'arm-linux-g++'
platform.link.xplatform = "arm-linux-"
此外,我选择的分支、目标和profile如下,主要目的是测试helix构建环境是否正确:
[0] Set BIF branch (hxclient_3_1_0)
[1] Set Target(s) (common_container_test)
[2] Set Profile (helix-client-all-defines)
进行build后,出现如下错误:
wmmxt_le-g++ -shared hxxml.exp -o iwmmxt-softfloat-dbg/hxxml.so -u RMACreateInstance -u CanUnload -u CanUnload2 iwmmxt-softfloat-dbg/obj/xmldll/xmlccf.o iwmmxt-softfloat-dbg/obj/xmldll/hxexpat/expatprs.o iwmmxt-softfloat-dbg/obj/xmldll/hxexpat/expatapi.o iwmmxt-softfloat-dbg/obj/xmldll/par2/import/expat/xmlparse/xmlparse.o iwmmxt-softfloat-dbg/obj/xmldll/par2/import/expat/xmltok/xmltok.o iwmmxt-softfloat-dbg/obj/xmldll/par2/import/expat/xmltok/xmlrole.o iwmmxt-softfloat-dbg/hxxml_libs.a -lstdc++ -lm -lpthread -ldl
/home/chenzhengyong/ezx-crosstool-0.6/gcc-arm-iwmmxt/gcc-3.3.6-glibc-2.3.2/arm-linux/lib/gcc-lib/arm-linux/3.3.6/../../../../arm-linux/bin/ld: ERROR: iwmmxt-softfloat-dbg/obj/xmldll/xmlccf.o uses FPA instructions, whereas iwmmxt-softfloat-dbg/hxxml.so does not
/home/chenzhengyong/ezx-crosstool-0.6/gcc-arm-iwmmxt/gcc-3.3.6-glibc-2.3.2/arm-linux/lib/gcc-lib/arm-linux/3.3.6/../../../../arm-linux/bin/ld: failed to merge target specific data of file iwmmxt-softfloat-dbg/obj/xmldll/xmlccf.o
上网搜索了相关资料,了解到软件浮点FPA和VFP两种格式,出现这种问题一般是库文件和应用程序所选用的格式不同而造成的。但是本编译过程应用程序和库文件都是使用相同的编译选项从源码编译,按道理不会出现格式不同的问题。使用
arm-linux-objdump -p a.out
命令查看前面编译的helloworld程序,看到如下信息:
private flags = 602: [APCS-32] [VFP float format] [software FP] [has entry point]
看来我编译出的工具链缺省采用VFP soft FP浮点格式。使用如下命令编译应用程序又会是什么结果呢?
arm-linux-gcc -mcpu=iwmmxt -msoft-float hello.c
结果出现如下错误信息:
ERROR: /tmp/cc2D7i8G.o uses FPA instructions, whereas a.out does not
看来我们的交叉编译工具链只能编译出VFP soft FP浮点格式的应用程序,因此,最终的解决办法是去掉-mcpu=iwmmxt -msoft-float编译选项,即修改$BUILD_ROOT/umakecf/
linux-2.2-libc6-armv5te-cross-gcc3.3-iwmmxt-softfloat.cf文件,将
platform.cc.args["default"] = /
"-pipe -W -Wreturn-type -fno-exceptions " /
"-mcpu=iwmmxt " /
"-msoft-float"
修改为:
platform.cc.args["default"] = /
"-pipe -W -Wreturn-type -fno-exceptions "
再次执行build,成功!
相关文章推荐
- QT5.7.0交叉编译与移植遇到的问题以及解决办法
- Linux手机DIY.库文件专题.交叉编译的浮点问题
- radvd移植到arm交叉编译问题解决
- Linux手机DIY.库文件专题.交叉编译的浮点问题
- 【转】搭建带软浮点交叉编译工具链
- Linux下交叉编译sqlite3并移植到AR…
- 交叉编译opencv2.31与移植至arm9
- Linux开源模块迁移概述暨交叉编译跨平台移植总结--从《嵌入式Linux驱动模板简洁和工程实践》
- MiniGUI的vxworks环境移植(2): cygwin+tornado交叉编译minigui库和示例代码
- 实验1 交叉编译工具链建立实验 64位机问题
- GDAL for Android在linux下交叉编译的问题
- ARMCC和GCC编译ARM代码的软浮点和硬浮点问题
- 交叉编译问题
- 交叉编译库移植
- 基于FS4412嵌入式系统移植(7) sqlite3交叉编译与移植
- 基于ROS的服务机器人移植过程编译问题汇总
- Cocos2dx交叉编译后在eclipse编译不通过的问题解决
- Fedora8上交叉编译qtopia4移植成功到s3c2410开发板
- minGW, cygwin, GnuWin32【C++的跨平台交叉编译问题】
- 【OpenCV3】Opencv3.2.0在Hisi3521下的交叉编译和移植