LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2697|回复: 6

arm-elf-as 编译ARM汇编程序时出错 ?

[复制链接]
发表于 2006-3-3 19:55:49 | 显示全部楼层 |阅读模式
在ADS集成环境下可以编译的汇编程序,然后在linux下用arm-elf-as编译出错,一些关键字都不支持,难道这个交叉工具是用来编译GNU语法的汇编程序吗?
那如果用ARM汇编的语法编的程序怎么在linux 下编译呢 ?
难道还要在linux安装 ARM SDT 不成?
请指点
发表于 2006-3-4 18:48:37 | 显示全部楼层
我用 arm-elf-gcc 只编译成功过非常老版本的 uClinux
一般我都用 arm-linux-gcc

不过 ADS 和 GNU 语法本来就是不同的, 大多数讲 Arm 汇编编程的书都会提到这一点
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-4 21:39:26 | 显示全部楼层
难道交叉工具arm-elf-gcc / as / ld .... 不能手工调用吗,非得
用arm-elf-gcc 加上参数一次生成吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-4 21:50:24 | 显示全部楼层
再请教一个问题:
如果一个C程序hello.c; 用下面命令
arm-elf-gcc -Wl, -elf2flt -o hello hello.c ;可以生成在uClinux下运行的程序,
我想多数人也是用这个命令一次生成的。
但是我要是分步执行如下命令的话则不能得到在uClinux中
运行的程序:
arm-elf-gcc -S hello.c             // OK
arm-elf-as hello.s -o hello.o  //  OK
          ; 执行 file demo.o 显示信息如下
          ; ELF 32-bit LSB relocatable, ARM, version 1(ARM), not stripped
arm-elf-ld  hello.o  -o hello   // ERROR ,信息如下
         ; can not find entry symbol _start ....
         ; undefined reference to '__gccmain'
         ; undefined reference to 'printf ' 等等
有兴趣的可以试一下,如果能成功的话,请告知一下
------------------------------------------------------------------------------------
还有一个:在ADS环境下生成的程序是ELF格式,如果把此ELF格式的程序在linux下用
arm-elf-elf2flt 工具转换为flt格式的行不行呢 ?
我用命令" arm-elf-elf2flt  hello " 试过则提示错误
回复 支持 反对

使用道具 举报

发表于 2006-3-5 20:57:24 | 显示全部楼层
我个人感觉如果调用 arm-elf-gcc 进行编译的时候, arm-elf-gcc 会自动传递一些信息给后面的工具, 而自己单步执行的时候, 显然少了这些东西.

简单的想一想, 为什么在进行交叉编译的时候在最简单的情况下只要加上 CC=arm-elf-gcc 的参数, 而不用连 include, lib 等一些东西都传递呢? 我认为就是因为 arm-elf-gcc 本身具有隐式设定一些参数的能力, 但 arm-elf-ld 这样的工具可能没有. 猜测而已, 没有任何根据
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-5 22:00:27 | 显示全部楼层
有道理! 只是我们还不知道具体的原因。
我想在windows ADS IDE中先生成ELF格式的程序,然后把它linux
用elf2flt工具转换为可在uClinux中运行的程序,能行的通吗?
不过我还没找到解决的方法,是不是在ADS编译时配置选项有文章可做呢?
哪位有兴趣的愿试试呢
回复 支持 反对

使用道具 举报

发表于 2006-3-6 17:10:05 | 显示全部楼层
我还没有学到这么深的地步
不过我在想是否可以写一个简单的宏来在代码级别实现ads格式和gnu格式的兼容.
设想而已,等忙完这几天的活儿后动手试试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表