日期:2014-05-16  浏览次数:20684 次

下载‘可执行文件’到开发板Linux系统‘不好运行’之“对策求解”
1、在2440的开发板里面已经下载了uboot、linux内核、文件系统;

2、把自己编写的文件man.c实现简单的流水灯功能(是用裸机的方式写的),用交叉编译器编译;

Makefile如下:

CROSS=arm-linux-

main: main.c
$(CROSS)gcc -o main main.c
clean:
rm *~

编译后,生成main二进制可执行文件;

3、启动开发板上的linux系统,在SecureCRT下,用
# rz 命令 
把main下载到开发板的/sbin目录下,用
#chmod +x main 修改main权限后
# ./main (或仅为 main)  
SecureCRT界面上显示, -/bin/sh : main : command not found  

也就是sh找不到命令,程序运行不起来啥的;

求教各位大侠,什么原因?
我猜的可能的原因有:
是Makefile里面没有定义程序运行的基址地址,用上述方法编写的程序是位置无关的吗?
是不是不可以用裸机方式写程序,是加了系统后有些内存空间被保护起来了;
还是文件生成的格式不对?
还是main文件要向系统注册啥的,就是告诉系统我有了啥?

5、搞了半天实在没搞出来,在学校的实验室网不好也没多查的啥,就看了几个开发板商的使用手册,实在找不出原因。搞的偶实在是笨溃了,在这向各位大侠求教了 !!!!



------解决方案--------------------
有file命令吗? file main看看
------解决方案--------------------
建议楼主交叉编译一个显示hello world的简单程序——就是printf语句,使用交叉编译,再使用那些命令下载到开发板上,如果能在串口中打印信息,证明程序、运行等等是没有问题的。
之后再考虑流水灯程序。

从-/bin/sh : main : command not found 看来,应该不是程序本身的问题,可能要涉及到文件系统方面的东东了。
------解决方案--------------------
首先,请问楼主编译开发板库的arm-linux-gcc和你编译程序的arm-linux-gcc一样吗?如果不一样很有可能出现库不匹配的情况,出现运行#./main comand not found。
然后咱们再根据提示慢慢改编裸机程序,以实用开发板。