不需要交叉编译
1. 嵌入式交叉开发环境组成是怎样的嵌入式系统开发为什么需要这样的交叉开发环境而通用计算机的开发不需要
所谓交叉编译,就是在一种机器结构下编译的软件将在另一种完全不同的机器上运行。典型的交叉编译的例子就是嵌入式系统工程师在自己的个人电脑上编译后的程序将在ARM,MIPS等等嵌入式工作平台上运行。所以,嵌入式交叉开发环境一般将由个人电脑,PC端嵌入式开发软件(如支持ARM的mdk,ads,rvds等等),支持硬件调试的硬件调试器及其配套的驱动软件(如j-link),当然,最重要的还要有嵌入式硬件系统即通俗所谓的开发板。
嵌入式系统之所以要在通用计算机上开发,我想主要还是资源配置的问题,按嵌入式系统的定义,嵌入式系统的软硬件将是可剪裁的以适用于各种不同的要求。这样的话,由于硬件平台千差万别,开发其编译器将变得不可能,即便开发出来,可能也需要及其繁琐的配置,大大降低了软件的可用性。另外就是使用也不方便,大多数嵌入式系统不会配备像PC机一样适于输入的键盘和较大的屏幕,所以,如果在嵌入式系统上敲代码,将是一件非常恼火的事情。
2. 如何解决linux下编译环境,运行环境不同的问题
基于Linux操作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主PC机所构成。目标硬件开发板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主PC机来完成(所以称为交叉编译)。双方之间一般通过串口,并口或以太网接口建立连接关系。
但在此我建议构建如下的交叉编译环境,适合个人或研发小组使用:单独拿出一台PC机(PII以上即可,就用以前淘汰的旧机器就可以),在该PC上安装桌面的Linux操作系统(如Red Hat Linux 8.0及以上),可以采用默认的安装选项(注意要包含ftp服务),这台PC作为Linux服务器,除管理员以外,一般不直接让其他人去操作。
将该Linux服务器接入局域网,并新建一些合法用户,以便其他的PC机(在此我们将其称为工作站)的合法用户能访问到Linux服务器。而其他的PC机(工作站)仍然使用Windows操作系统,原来干啥继续干啥。
需要的软件工具包括:
1、FTP客户端程序(如Cuteftp,可到网上下载)。
2、Telnet工具(如SecureCRT,可到网上下载)。
3、移植到某一特定ARM平台的Linux操作系统内核源码(一般由销售商整理提供)。
4、GNU编译工具,可由相关网站下载,或由销售商整理提供。
在工作站安装:
在某工作站PC上安装FTP客户端程序和Telnet工具,安装完毕后应该可以在该工作站PC和Linux服务器之间进行文件的传输,并在工作站PC可以通过Telnet登陆到Linux服务器(可能需要将Linux服务器的防火墙服务关闭才能完成)。
在Linux服务器安装:
将工作站PC上的Linux操作系统内核源码压缩包和GNU编译工具通过FTP传送到Linux服务器的某个目录(如合法的用户目录),然后在该目录下解压,并将GNU编译工具安装到默认的工作目录即可,以上工作通过在工作站PC使用Telnet工具完成,而不需要在Linux服务器上进行。
Linux操作系统内核的编译:
Linux操作系统内核的编译一般有一个比较固定的步骤,会根据MakeFile文件的不同而略有差异,可参考相关文档,编译的工作在工作站PC使用Telnet工具完成。
3. gcc和交叉编译工具生成的可执行文件有什么不同
可执行文件的目标平台不一样。你说的gcc应该是指在pc上,即x86体系结构。而交叉编译生成的应该是其他体系平台的,如ARM。只能在对应的平台上运行。