Chinaunix首页 | 论坛 | 博客
  • 博客访问: 452216
  • 博文数量: 72
  • 博客积分: 3186
  • 博客等级: 中校
  • 技术积分: 1039
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-07 16:53
文章分类

全部博文(72)

文章存档

2012年(1)

2011年(5)

2010年(10)

2009年(56)

我的朋友

分类: LINUX

2011-03-27 23:40:15

原来一直在老本本上工作,cpu是inter32位的。一直使用的arm-linux-gcc都是从网上下载的,使用都没发生过什么问题。

前段时间配了一个台式电脑,cpu是amd64位的, 装了arch-linux 64-bit

在配置 arm 交叉编译环境时出现了几个问题,解决了,记录一下:

1. 将原来使用的arm-linux-gcc解压后,使用不了,
    表现为, 该可执行程序(如arm-linux-gcc)存在, 但执行时却报错“找不到该文件或目录”

    原因: 现在使用的是64-bit的arch-linux, 原来的交叉编译器是32位版本的,所以会出现这样的问题

   解决: 自己build一个64位的arm交叉编译器即可, 用buildroot编译一个很方便。

2. 64位的环境下, long是64位的, 这样在做除法时会使用 libgcc 库中的一个做除法的函数。
    所以编译时很多时会都会出现下面这样的错误:
                       undefined reference to `__udivsi3'
    
     现在用的arm-linux-gcc是在64bit linux上build出来的, 所以其默认也是64位的, 在使用它编译arm可执
行程序时, 就会出现上面的问题, 这些问题大都在代码中做除法的地方。
   
    原因: 上面已经分析了
    解决 : 在编译时加上参数 -march=armv5te -mcpu=arm926ej-s
                这里我使用的cpu是arm926ej-s的core, 版本是armv5te的, 具体的参数要根据使用的arm cpu来设置。 一般更改时去找Makefile中的CFLAGS 变量,在其中加上上面的参数即可。
阅读(11807) | 评论(0) | 转发(0) |
0

上一篇:barebox

下一篇:arm swi 软中断测试

给主人留下些什么吧!~~