作者typecommand (:))
看板LinuxDev
标题Re: [问题] 如何将elf格式转成flt
时间Fri Jul 27 13:05:23 2007
※ 引述《typecommand (:))》之铭言:
: 由於自学embedded system快要进入最後的阶段了,由於我用的
: 板子是arm7tdmi + uclinux,该平台的特色是不能执行linux常
: 用的elf格式,一定要用其他工具转成flt格式才能在上述的平
: 台上执行,小弟我看书上的范例执行了如下的指令
: arm-elf-ld -L/opt/uClinux/arm-elf/include -elf2flt -o hello
: crt0.o crti.o hello.o crtn.o -lc -lgcc -lc (*.o我通通放在同个目录)
: 出现的讯息是cannot find -lgcc
: 如果我把-lgcc拿掉,就会出现一连串的错误
: 想请问有那位大大有可以成功将elf转成flt的经验吗?谢谢。
文章被m了,有点不好意思,另外在板上求助了很多人,我想也
该是到了回馈的时候了
通常elf和flt (flat)的差别是,flt去除了elf多余的东西,因
为并不是所有的embedded平台都可以执行elf格式(细节可以自行google)
,之前我去参加Soc研习营,该厂商提供的平台是ARM10 + embedded linux
可以直接执行elf格式,我回家照做,却不能执行,原因在於我的平台是
ARM7 + uclinux ,该平台和其他embedded system平台最大的不同在於没
有MMU(我不太确定是不是non-MMU才可以执行flt格式,有错请高手指正)
另外我请教了很多高手,我终於可以成功将elf转成flt,我的步骤如下
1.先将source code编译
arm-elf-gcc -c hello.c (成功後会出现hello.o这个档案)
2.确定hello.o是否为elf格式可以执行 file hello.o
3.如果你的平台是有MMU,应该就可以直接执行elf格式,若没有MMU请继续看
4.将elf转成flt
arm-elf-ld -L/opt/uClinux/arm-elf/include -elf2flt -o hello
/opt/uClinux/arm-elf/lib/crt0.o
/opt/uClinux/arm-elf/lib/crti.o
hello.o
/opt/uClinux/arm-elf/lib/crtn.o
/opt/uClinux/arm-elf/lib/libc.a
/opt/uClinux/lib/gcc-lib/arm-elf/2.95.3/libgcc.a
/opt/uClinux/arm-elf/lib/libc.a
(以上路径为我个人的路径,若有不同请自行代换,另外以上的命令要连续打,不能
空行,空行是为了方便排版给大家看)
如果转成功後,应该会出现hello这个执行档,执行file hello,会出现
hello: data,而不会出现flt的格式,没关系,用nfs的方式执行hello,
顺利的话应该可以在板子上执行并出现hello world的讯息
就先到此为此,若有什麽遗漏或讲错,还请高手指正,谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.225.183.99
※ 编辑: typecommand 来自: 125.225.183.99 (07/27 13:07)