LinuxSir.cn,穿越时空的Linuxsir!

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

关于在armlinux下的应用程序的编译问题

[复制链接]
发表于 2005-10-27 09:06:31 | 显示全部楼层 |阅读模式
关于在armlinux下的应用程序的编译问题
我按照置顶的文章成功跑起了uclinux,用testsuits里面的ep7312跑了armlinux也成功了,但是用arm-elf-gcc -Wl,-elf2flt -o hello hello.c命令编译成功的hello程序只能在uclinux下运行,在armlinux下就是一堆乱码,而且还出现死循环.不知道是怎么回事,在armlinux下的应用程序编译有什么特殊的吗 ???
是不是在armlinux下的应用程序不能是flt格式的,那需要用什么格式的?
曾经看到过有人用arm-elf-gcc -O2 -o hello hello.c命令来编译,我使用之后出现如下错误:
/usr/local/lib/gcc-lib/arm-elf/2.95.3/libgcc.a(__main.o): In function `__do_global_ctors':
__main.o(.text+0xc4): undefined reference to `__CTOR_LIST__'
/usr/local/lib/gcc-lib/arm-elf/2.95.3/libgcc.a(__main.o)(.data+0x0): undefined reference to `__DTOR_LIST__'
collect2: ld returned 1 exit status
这是什么意思啊?
发表于 2005-10-27 13:36:09 | 显示全部楼层
首先,uclinux和armlinux是两个区别很大的OS,uclinux面向的是没有MMU的芯片,armlinux面向的是有MMU的芯片
其次,在uclinux下,应用程序好像是直接访问物理内存,而在armlinux下不能直接访问物理内存的

因此,用同一个编译器编译出来的程序,一般不会在这两个系统上都能正常运行的

PS:个人观点,不一定完全正确,偶也是菜鸟
回复 支持 反对

使用道具 举报

发表于 2005-10-27 15:21:32 | 显示全部楼层
关注:
我也正好碰上这个问题,刚用上嵌入式系统,系统运行起来后,编译出来的程序无法运行
+++++++++++++++++++++
# arm-elf-gcc -o test2 test2.c -Wall -elf2flt
/usr/bin/../lib/gcc-lib/arm-elf/3.2.1/../../../../arm-elf/bin/ld: cannot open crt0.o: ?????????
collect2: ld returned 1 exit status

# arm-elf-gcc -o test2 test2.c -O2
/usr/bin/../lib/gcc-lib/arm-elf/3.2.1/../../../../arm-elf/bin/ld: cannot open crt0.o: ?????????
collect2: ld returned 1 exit status

#arm-elf-gcc test2.c -c -Wall -elf2flt -O2
#arm-elf-ld test2.o -o test2 -Map test.map
arm-elf-ld:warning:cannot find entry symbol _start:defaulting to 0x00008000
#arm-elf-ld test2.o -o test2 -Map test.map -entry 0x00008000
把生成的二进制文件下载到板子上运行就是显示
“segmentation fault"
也不知道错在哪里??
+++++++++++++++++++++++++++++++++
我也不知道该用什么参数,所有知道的参数都试了一下,可是都不行
希望哪位老兄指点一下
多谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-1 08:35:35 | 显示全部楼层
我又在网上逛了一圈,用file命令查看文件属性,在uclinux上是data,在armlinux上是ELF 32-bit LSB executable,ARM,version 1 (ARM),for GNU/Linux 2.0.0,dynamically linked(uses shared libs),not stripped.
现在的问题是在rh9下用arm-linux-gcc -o hello hello.c可以编译成功,用的是arm-linux-gcc-3.3.2.tar.bz2解压缩之后的,但是虽然编译不出错了,但是拷贝到arm板上还是不能运行,显示Bad command or file name.真让人郁闷.
回复 支持 反对

使用道具 举报

发表于 2005-11-1 09:20:00 | 显示全部楼层
Post by qld001a
但是拷贝到arm板上还是不能运行,显示Bad command or file name.真让人郁闷.


是不是没有设置可执行属性?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-2 09:22:12 | 显示全部楼层
Post by youbest
是不是没有设置可执行属性?

啊?可执行属性怎么设置?楼上的告诉我一下吧,谢谢啊 ~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-2 09:38:24 | 显示全部楼层
to qq2375:
你可以看一下你的交叉编译器安装或者解压到usr/local/arm-elf下面的bin文件夹里有没有ld这个文件,另外,压缩包最好在/根文件下面.这样直接就解压到usr下面的相关目录里了
回复 支持 反对

使用道具 举报

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

本版积分规则

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