• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 急呀!!!如何设置交叉编译器的目标平台?? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 64120
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2012-02-29
最后登录: 2012-03-06
楼主  发表于: 2012-02-29 18:27

 急呀!!!如何设置交叉编译器的目标平台??

在做minigui在Micro2440上的移植,用的是友善之臂提供的arm-linux-gcc-4.3.2,但是在运行应用程序时出现“illegal instruction”的错误,在网上查找了一下,说是编译应用程序的目标平台设置不对。
运行arm-linux-readelf -A hello 出现 Tag_CPU_name: "ARM10TDMI"
                                     Tag_CPU_arch: v5TE
                                       ......
可是2440是arm9的体系结构,按照网上的说法,出现的信息应该是Tag_CPU_name: "4T"
                                                          Tag_CPU_arch: v4T
                                                               .......
我又安装了另一个arm-linux-gcc-4.3.3,编译了一个简单的test程序,arm-linux-readelf -A test 出现的信息确实是Tag_CPU_name: "4T"
                                                                                                            Tag_CPU_arch: v4T
所以我想,应该是编译起的配置的问题,可是找了很久也没找到配置编译器目标平台的方法,还望各位多指教,很着急呀,先谢过了。。。

^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
1楼  发表于: 2012-02-29 20:14
印象中mini2440 的最新的编译器是4.4.3

另外,编译器有一些选项可以指定,你可以尝试加上 -march=armv4t
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
2楼  发表于: 2012-02-29 20:37
楼上正解
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 64120
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2012-02-29
最后登录: 2012-03-06
3楼  发表于: 2012-02-29 22:20

 回 1楼(911gt3) 的帖子

我加上了-march=armv4t 可是编出来的程序还是显示Tag_CPU_arch: v5TE。。。。好像编译器默认的是v5TE,不过为什么改不过来呢,求解释呀
级别: 新手上路
UID: 64120
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2012-02-29
最后登录: 2012-03-06
4楼  发表于: 2012-02-29 22:23
我按照网上的一些说法,在bin里面建立了脚本,里面加上#!/bin/sh
arm-none-linux-gnueabi-gcc-4.3.2 -march=armv4t $*
也还是不行,真的是无奈了呀。。。
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
5楼  发表于: 2012-03-01 10:11
-march=armv4t 是一定有用的
你可以随便写一个很简单的测试程序,直接在命令行编译然后验证
级别: 新手上路
UID: 64120
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2012-02-29
最后登录: 2012-03-06
6楼  发表于: 2012-03-01 11:02
Cyril:~/2440 # arm-linux-gcc-4.3.2 -march=armv4t -o test test.c
Cyril:~/2440 # arm-linux-readelf -A test
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "ARM10TDMI"
  Tag_CPU_arch: v5TE
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-1
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align8_needed: Yes
  Tag_ABI_align8_preserved: Yes, except leaf SP
  Tag_ABI_enum_size: int
  

是这样子吗??不行呀。。。
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
7楼  发表于: 2012-03-01 12:21
1) 你可以再试试 -march=armv4 , 或者再加上 -mcpu=arm920t , 具体请查gcc手册
2) 采用2440最新的编译器4.4.3
级别: 新手上路
UID: 64120
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2012-02-29
最后登录: 2012-03-06
8楼  发表于: 2012-03-01 14:25
好的,谢谢了,我试试看。不过用4.4.3会报浮点数错误"Floating point exception",这是为什么呢,我的诉主机用的是suse,难道不行吗??
级别: 新手上路
UID: 64120
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2012-02-29
最后登录: 2012-03-06
9楼  发表于: 2012-03-01 14:42

 回 7楼(911gt3) 的帖子

刚试过了,还是不行的。。。难道是编译器的问题吗
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go