LinuxSir.cn,穿越时空的Linuxsir!

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

自己的交叉编译后在目标板上不能运行,也不能CP到目标板 (已解决)

[复制链接]
发表于 2006-4-7 23:02:12 | 显示全部楼层 |阅读模式
我用的是RHEL AS版,目标板是北京博创产的ARM2410S.我已经关了SELINUX,防火墙也关了,编译完HELLO后(无错误提示),MINICOM开发板然后MOUNT NFS我的机器运行HELLO程序,开发板会返回SERVER NO RESPONSE,TRY AGAIN的信息,然后就类似于死机似的,只能RESET开发板.而且如果MV或CP程序到目标板,会提示PERMISSION DENIED,而实验室其他机器装的是RHEL ES,编译运行就没问题.

如果我用博创公司提供的源代码也能运行成功,可自己写的就是不行,用开发光盘提供的程序编译后可以运行也可CP到目标板运行,自己写好后(没他的MAKEFILE那么复杂)不能运行,即时放到博创的开发目录中也不行.


博创开发光盘提供的程序如下:
#include <stdio.h>

#include <fcntl.h>



int main()

{

        printf("hello world \n");

        return 0;

}

MAKEFILE:
TOPDIR = ../
include $(TOPDIR)Rules.mak

EXEC = $(INSTALL_DIR)/hello  ./hello
OBJS = hello.o

all: $(EXEC)
$(EXEC): $(OBJS)
        $(CC) $(LDFLAGS) -o $@ $(OBJS)
install:
        $(EXP_INSTALL) $(EXEC) $(INSTALL_DIR)


clean:
        -rm -f $(EXEC) *.elf *.gdb *.o


请大家看看我该怎么作 谢拉
发表于 2006-4-8 16:56:32 | 显示全部楼层
关于传文件的问题, NFS 不是唯一的选择, 在 PC 端装个 FTP Server 也挺方便的

你自己的 Makefile 中, CC 也许应该明确指定为交叉编译器, 比如 arm-linux-gcc, 当然, 链接库和一些别的相关的工具都应该指定成使用交叉编译工具, 否则产生的二进制文件是 PC 端的, 而不是目标版那一端的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-8 18:15:13 | 显示全部楼层
关键是我在自己写的makefile中已经指明了是交叉编译的gcc,编译后的hello是不能在pc上运行的,我验证过了。
回复 支持 反对

使用道具 举报

发表于 2006-4-8 19:43:04 | 显示全部楼层
在你帖出来的这部分 makefile 中确实看不出是否指定了 CC
你用 file 命令看一下你编译出来的程序有什么信息
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-8 21:21:04 | 显示全部楼层
我贴出的程序是可以在开发板里执行的,这个程序是在开发光盘安装完后自动创建的目录里的,也就是开发光盘提供的实验源码。我自己写的makefile 是很简单很平常的那种,编译没有错误,就是在目标/宿主上都不能执行。把我写的简单程序在RHEL ES上就没问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-9 22:22:39 | 显示全部楼层
问题解决了,AS库文件的问题。我把编译选项的static去掉,就没问题了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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