WDK编译环境配置说明

WDK编译环境配置说明
WDK编译环境配置说明

客户端DDK编译环境配置说明

概要

文档主要说明DDK编译环境的部署,如何使用该环境进行客户端代码的编译,环境中一些主要命令、如何扩展一些命令。以及在从VC环境下移植过来后,代码需要改进的一些描述。文章将着重对相关模块下的sources makefile进行描述。

主要分以下五个部分,各个部分的详细叙述请参见各章节。

1.DDK build server的部署

2.DDK环境目录的介绍

3.DDK编译工具和操作介绍

4.编译过程描述以及tang工程编译分析

5.VC源代码移植一些常见编译错误

6.一些遗留移植和完善工作

DDK build server的部署

DDK build server是指存在ddk build环境的服务器,可供每个开发人员下载到自己的开发机器,经过简单的配置就能成为本地ddk编译换进的一套机制。DDK build server可供公司各个项目组使用,方便的下载,配置并执行编译功能。

目前没有ddk build server部署,大家可以从机器192.168.12.103的共享目录中进行下载。DDK环境目录的介绍

从上图中可以看到红圈标识的几个文件和文件夹,下面一一进行介绍:

Bin目录:包含了对应系统平台下的整个环境的工具和编译命令,已经进行环境设置的bat 等。例如:cl.exe,mc.exe,midl.exe,rc.exe包括编译命令build.exe等。

Inc目录:包含了整个环境中的头文件,其中包含的子目录crt,atl,wtl,ddk,api,mfc等包含了各种不同编程框架,crt以及系统sdk的头文件。各个子目录都,对应与相应的环境变量一一对应:

Crt $( CRT_INC_PATH) = ddk下载目录\inc\crt

Sdk $( SDK_INC_PA TH)= ddk下载目录\inc\api

Wtl $( WTL_INC_PA TH)= = ddk下载目录\inc\wtl80

Lib目录:包含了整个编译环境下的所有lib文件(除用户lib),其中包含的子目录atl,crt,mfc,以及不同操作系统对应的库目录。各个子目录与相应的环境变量一一对应:

Crt $(CRT_LIB_PA TH)= ddk下载目录\lib\crt\*

Sdk $( SDK_LIB_PATH)= ddk下载目录\lib\wxp\*

Src目录:源代码路径,开发人员将需要编译的代码都放在src目录下。

Dir文件:是整个环境非常重要的一个文件,dir中记录了当前文件夹需要编译的子文件夹,并以一定格式组织,作为ddk编译时目录路由的凭证。

所有在dir目录中的文件夹都会被编译,可以通过删除在dir文件中的目录记录来排除编译某个文件夹。

WDK build 工具和操作

其中OACR工具是用来做代码的静态分析,可以帮助我们规范代码,排查一些代码中的问题。

编译过程描述以及tang工程编译分析

环境的设置:命令行窗口的启动,实际上是使用了以下的一段命令语句:

C:\Windows\System32\cmd.exe /k D:\ddk_build\bin\setenv.bat D:\ddk_build\ chk x86 WinXP

这段语句实际打开一个命令行窗口,并且执行Setenv.bat文件从而设置了一系列的环境变量。在目录介绍章节当中提到的环境变量都在这个时候设置好的。

编译过程:build.exe实际执行编译的整个过程,大致过程可表示为:

Scan:扫描工程文件。编译过程的第一步,扫描整个工程中的文件树(dir文件起作用)并且决定是不是进行目标编译。在扫描结束后,Build工具会根据扫描结果,得到目标的类型,以及决定整个编译过程的细节,包括有哪些步骤需要执行比如pass0,pass1,pass2,并且各个过程的参数有哪些等等。总之就是编译任务执行前的所有准备工作。

Pass0:处理源代码。在这个过程中NMAKE会调用一个或多个的工具去处理源代码,比如:?Microsoft Interface Description Language (MIDL) compiler (Midl.exe).

?Other WDK support tools such as the Stamp INF tool (Stampinf.exe) and Managed Object Format (MOF) compiler (Mofcomp.exe).

?The BinPlace utility (Binplace.exe) to place files.

Pass1:编译obj,lib文件。编译源文件生成object文件和库文件。以下的工具会被调用或可能被调用:

?The C/C++ compiler (Cl.exe).

?The Resource compiler (Rc.exe).

?Other WDK support tools such as the Stampinf.exe and Mofcomp.exe.

?The BinPlace utility (BinPlace.exe) to place files.

?The linker might be called through the OACR wrapper (Oacrlink.exe).

Pass2:生成最终的目标文件。在这个过程中linker会将pass1中生成的中间文件链接成最终的目标,比如可执行程序,dll,驱动程序等。以下工具会被使用或可能被使用到:

?Linker (Link.exe).

?Resource compiler (Rc.exe).

?BinPlace utility (BinPlace.exe), to place files.

?The linker might be called through the OACR wrapper (Oacrlink.exe).

Binplace文件:在pass0,1,2三个过程的每个结束时,如果我们在sources文件中定义了对应

的PASS0_BINPLACE, PASS1_BINPLACE, PASS2_BINPLACE,那么BinPlace.exe都会被调用,并按照sources中定义的规则进行文件的binplace。具体请参见sources文件分析部分。

Tang工程解析

在ddk环境下的编译过程都严格的按照上面的步骤进行编译,下面将列举tang项目中的三个不同类型的工程lib,dll,exe 进行分析,主要是分析工程中的Sources文件。

SOURCES文件用于描述其所在目录下,有哪些文件参与编译,编译的结果应该是什么(是一个lib还是一个sys还是一个可执行程序),输出目录在哪里,要传递给编译器的各种定义和选项分别是什么,等等。由一个SOURCES文件描述的其实就是一个单独的工程,Build 最后会参照SOURCES文件的设置,产生一个指定的目标文件(dll ? lib ? exe ? sys ?)完全依赖于SOURCES文件的写法。

CommonLib工程:

TARGETNAME=Commonlib //Lib名称

TARGETTYPE=LIBRARY //指定工程的类型为Lib工程

C_DEFINES= $(C_DEFINES) -DUNICODE -D_UNICODE //指定为unicode编码

MSC_WARNING_LEVEL=/W1 /WX //指定警告错误级别

USE_MSVCRT=1 //使用crt

USE_STL=1 //使用STL

USE_ATL=1 //使用A TL

STL_VER=70 //指定STL版本为7.0

MINWIN_SDK_LIB_PATH=$(SDK_LIB_PA TH)

INCLUDES= $(COMMON_DIR)\Inc; \

$(COMMON_DIR)\Support\Inc; \

$(CRT_INC_PATH); \

$(SDK_INC_PATH); \

$(SDK_INC_PATH)\crt\stl70; \ //工程中引用头文件目录

TARGETLIBS= \ //工程中引用的lib库

$(SDK_LIB_PATH)\user32.lib \

$(SDK_LIB_PATH)\Kernel32.lib \

$(SDK_LIB_PATH)\Advapi32.lib \

$(SDK_LIB_PATH)\comctl32.lib \

$(SDK_LIB_PATH)\gdi32.lib \

$(SDK_LIB_PATH)\winspool.lib \

$(DDK_LIB_PATH)\nt.lib \

$(SDK_LIB_PATH)\shell32.lib \

$(SDK_LIB_PATH)\ole32.lib \

$(SDK_LIB_PATH)\oleaut32.lib \

$(SDK_LIB_PATH)\psapi.lib \

$(SDK_LIB_PATH)\msxml2.lib \

$(SDK_LIB_PATH)\shlwapi.lib \

SOURCES=Commonlib.idl \

RegistryFun.cpp \

unzip.cpp \

Util.cpp \

WinObject.cpp \

XmlWrapper.cpp \

zip.cpp \

ElementHelper.cpp \ //需要编译的源文件列表

TARGET_DESTINATION=Target\chk //binplace的目的地址

PASS0_BINPLACE=-:DEST Common\Inc $(OBJ_PATH)\$(O)\$(TARGETNAME).h //PASS0 binplace

PASS2_BINPLACE=$(OBJ_PA TH)\$(O)\$(TARGETNAME).lib //PASS2 binplace

其中pass0 的binplace使用了:DEST改变binplace的目的地址,如果定义了TARGET_DESTINATION,默认使用该定义的地址为binplace的目的地址。但是可使用:DEST改写该值。但必须严格按照语法进行定义。Pass2使用默认的目标地址。

所以工程编译过程中,在sources的当前目录中生成一些中间文件,有几个是产生的log文件,可以帮助分析编译过程中的一些参数传递和一些错误等。具体生成的中间文件及文件夹如下图,其中在文件夹类似objchk_wxp中生成的是obj,lib,res,manifest等中间文件:

当然最终的目标文件也会生成在那个目录中,但是如果进行了binplace的设置,binplace.exe 会将设定的文件移动到目标目录下。

LogDLL工程:

TARGETNAME=LogDll //Lib名称

TARGETTYPE=DYNLINK //指定工程的类型为动态链接库工程

C_DEFINES= $(C_DEFINES) -DUNICODE -D_UNICODE -DWIN32 MSC_WARNING_LEVEL=/W1 /WX

USE_MSVCRT=1

USE_STL=1

USE_ATL=1

STL_VER=60

MINWIN_SDK_LIB_PATH=$(SDK_LIB_PA TH)

INCLUDES= $(COMMON_DIR)\Inc; \

$(CRT_INC_PATH); \

$(SDK_INC_PATH); \

$(SDK_INC_PATH)\crt\stl60; \

TARGETLIBS= \

$(SDK_LIB_PATH)\user32.lib \

$(SDK_LIB_PATH)\Kernel32.lib \

$(SDK_LIB_PATH)\Advapi32.lib \

$(SDK_LIB_PATH)\comctl32.lib \

$(SDK_LIB_PATH)\gdi32.lib \

$(SDK_LIB_PATH)\winspool.lib \

$(DDK_LIB_PATH)\nt.lib \

$(SDK_LIB_PATH)\shell32.lib \

$(SDK_LIB_PATH)\ole32.lib \

$(SDK_LIB_PATH)\oleaut32.lib \

$(SDK_LIB_PA TH)\psapi.lib \

$(SDK_LIB_PATH)\msxml2.lib \

SOURCES=Log.cpp \

LogDll.rc \

TARGET_DESTINATION=Target\chk

PASS1_BINPLACE=$(OBJ_PA TH)\$(O)\$(TARGETNAME).lib

PASS2_BINPLACE=$(OBJ_PA TH)\$(O)\$(TARGETNAME).dll

和CommonLib类似,只是target类型不一样。

VC源代码移植一些常见编译错误

一些遗留移植以及完善工作

1.除A VModule的各业务模块都没有进行移植编译,需要各个模块的负责人进行移植

2.在移植过程中的一些错误改正,以及OACR检测出的一些警告的修复等。

3.Build client环境的一些自动化设置脚本,已经一些通用的脚本编写,命令扩展工作等。

4.待补充…

实验报告_实验1 C程序的运行环境和运行方法()

实验报告_实验1 C程序的运行环境和运行方法 一、实验目的: 1、熟悉VS 2005/2008/2010的下载、安装及使用,能够在IDE环境中编辑、编译、链接、运行C程序; 2、熟悉C程序的基本结构,能够参考例题代码编写简单C程序; 3、熟悉C语言中注释的用法。 二、实验内容 说明:基础题为必做题,提高题为选做题 1、(基础题) 操作内容:请学生建立新项目(lab_1_1),输入下列代码,并编译、链接、运行:(独立完成) 程序代码: #include int main( ) { printf ("This is a C program.\n"); return 0; }

问题:C程序的编译、链接、运行可以一次性完成吗?清理、重新生成项目(或程序)有什么作用? 答:可以,生成:如果程序没有编译过就全部编译,已编译过的只编译修改的部分,从新生成:先清除一遍,再对所有文件编译。 2、(基础题) 请学生上机编译下列程序,修改其错误,再运行: #include ; main( ) { int a scanf(“%d”,a); Printf(“%d*%d=%d”,a,a,a*a); ] 修改后的程序代码: #include int main() { int a; scanf(“%d”,a); printf(“%d%d%d”,a,a,a*a); return 0; } 3、(基础题)请参考例题代码,按下列要求,写出相应的C程序: 程序代码:#include

int main() { printf(" *\n"); printf(" **\n"); printf(" ***\n"); printf(" ****\n"); printf("*****\n"); return 0; } 4、(提高题)请参考例题代码,按下列要求,写出相应的C程序: 输入圆的半径,输出其周长与面积; 程序代码: #include #define Pi 3.14 int main() { float r,l,s,pi; scanf("%f",&r); l=2*pi*r; s=pi*r*r; printf("%d%d\n",s,l); return 0; }

实验一 C程序的运行环境和运行C程序的方法实验报告

实验一C程序的运行环境和运行C程序的方法 1.实验目的: (1)了解所用的计算机系统的基本操作方法,学会独立使用该系统 (2)了解在该系统上如何编辑,编译、连接和运行一个C程序 (3)通过运行简单的C程序,初步了解C源程序的特点 2. 实验内容和步骤 (1)检查所用的计算机系统是否已安装了C 编译系统并确定它所在的子目录(2)进入所用的集成环境 (3)熟悉集成环境的界面和有关菜单的使用方法 (4)输入并运行一个简单的、正确的程序 输入下面的程序 # include void main() { printf(“This is a c program..\n”); } ①下面是屏幕上显示的编译信息。无错,进行连接。 --------------------Configuration: L1 - Win32 Debug-------------------- Compiling... L1.c L1.obj - 0 error(s), 0 warning(s) ②连接无错误,使程序运行,观察分析运行结果。 --------------------Configuration: L1 - Win32 Debug-------------------- Linking... L1.exe - 0 error(s), 0 warning(s) 运行输出结果 This is a c program. Press any key to continue This is a c program. Press any key to continue 分析:输入自己编写的源程序,检查程序有无语法错误,可以通过编译来实现,它会自动查出程序的语法错误,如果有错误应该找出原因,并改正过来,再进行编译和连接,仔细分析编译信息,确定没错误就可以运行程序,输入数据。 第一个程序运行的结果是This is a c program.。符合我们原来设计这个程序的目的,说明这个程序是正确的。 (5)输入并编辑一个有错误的C程序 输入程序 #include

嵌入式操作系统实验一建立交叉编译环境

嵌入式操作系统实验一建 立交叉编译环境 Last updated on the afternoon of January 3, 2021

嵌入式操作系统实验报告 队友:张圣苗亚 实验内容 1、准备工作工作:安装virtualbox虚拟机工具,并安装系统、增强型工具,实现共享文件夹的自动挂载。 2、利用crosstool提供的脚本安装和相关资源编译面向的ARM的GCC工具。 详细内容1:安装虚拟机软件和虚拟机时要完成的主要步骤有:安装virtualbox,建立一台虚拟机,分配内存和硬盘,指定共享文件夹(主机和虚拟机可共同操作),指定操作系统镜像文件路径(相当于光盘,第一次启动时安装),安装虚拟操作系统,安装增强工具包,实现共享文件夹的自动挂载。有几点需要注意: 1、虚拟硬盘尽量分配大一些,之后再扩就比较麻烦。 2、共享文件夹不要有中文路径,不然挂载后看不到中文名称文件。 3、安装操作系统时,不能断网,需要下载各种资源,不然会异常。 详细内容2需要安装与脚本相关的工具,需要修改crosstool中的配置文件以指定编译的目标位arm-linux。需要修改需要的资源 实验步骤 实验准备: 在实验准备中,在安装完增强工具包()并重启之后,需要实现对共享文件夹的自动挂载,只需要修改etc目录中的配置文件,是很多linux系统管理员的偏爱,因为凡是需要随系统自动启动的服务、程序等,都可以放在里面。 $sudomkdir/mnt/share $sudomount-tvboxsfembedded/mnt/shared 上面三句话实现了将共享文件夹embeded挂载到了share上。 gedit/etc/ 将第2句命令添加在exit之前,实现了自动挂载功能。 实验一 一、搭建编译环境 1、安装于脚本运行相关及其他的工具bison、flex、build-essential、patch、libncurses5-dev。

嵌入式交叉编译环境的搭建

实验二、嵌入式交叉编译环境的搭建 1、实验目的: 通过本实验使学生掌握交叉编译环境的建立,了解在S3C2440上交叉编译环境搭建的原理及步骤。 2、实验设备及说明 1、安装ubuntu10及vmware的计算机 2、天嵌2440的开发板 3、实验指导书 4、天嵌开发板的超级终端设置 5、天嵌开发板开发文档 6、TQ2440使用手册v2.3---20100125 3、实验内容和步骤 1、安装交叉编译器:EABI4.3.3 ●解压EABI 工具包 命令:tar zxvf /mnt/hgfs/(根据本机压缩包存储路径输入)/EABI 4.3.3.tar.gz –C / ##将压缩包解压到根目录下 ●添加路径至全局变量PATH中 命令:PATH=$PAHT:/opt/EmbedSky/4.3.3/bin (此路径应根据本机的具体情况输入) ●查看全局变量PATH 命令:echo PATH ###查看刚才的添加是否成功 ●查看交叉编译命令是否能够使用 命令:arm-linux-gcc –v ###如果刚才解压、添加变量成功,此时输入命令后,即可以显示命令的版本信息。

2、minicom

●在线安装minicom 命令:apt-get install minicom ●在命令行中键入“minicom”,这就启动了minicom软件。 ●Minicom在启动时默认会进行初始化配置minicom -s ?CTRL+A Z,来查看minicom的帮助 ?CTRL-A O配置minicom的串口参数,选择“Serial port setup”子项,上面列出的配置是minicom启动是的默认配置,用户可以通过键入每一项前的大写字母,分别对每一项进行更改.要对波特率、数据位和停止位进行配置,键入“E”,在该配置界面中,可以键入相应波特率、停止位等对应的字母,即可实现配置,配置完成后按回车键就退出了该配置界面。在确认配置正确后,可键入回车返回上级配置界面,并将其保存为默认配置。 ?

java的开发环境和运行环境是一回事吗

Java程序开发与运行环境 Java不仅提供了一个丰富的语言和运行环境,而且还提供了一个免费的Java开发工具集(JavaDevelopersKits,简称JDK)。编程人员和最终用户可以利用这个工具来开发java 程序或调用Java内容。JDK包括以下工具:javacJava语言编译器,输出结果为Java字节码java,Java字节码解释器javapDisassembeler:Java字节码分解程序,本程序返回Java程序的成员变量及方法等信息。javaprof资源分析工具,用于分析Java程序在运行过程中调用了哪些资源,包括类和方法的调用次数和时间,以及各数据类型的内存使用情况等。javahC代码处理工具,用于从Java类调用C++代码javaAppletViewer小应用程序浏览工具,用于测试并运行Java小应用程序javaDebuggerAPIJava调试工具APIPrototypeDebuggerJava调试工具原型 Java开发环境还包括Java类库(包括I/O类库、用户界面类库、网络类库等)和HotJavaWWW浏览器。其中,HotJava浏览器提供了在WWW环境下运行Java代码的一个运行系统,而且还为WWW开发人员提供了一个Java开发框架。Java解释器是面向Java程序的一个独立运行系统,它可以一种稳定、高性能方式运行那些独立于平台的Java 字节码,Java编译器则用于生成这种字节码。 JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心Java API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。Java API包括一些重要的语言结构以及基本图形,网络和文件I/O.一般来说,Java API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。 JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。 在实际应用上讲,JRE的类库只是JDK所有类库里面的一小部分,只是用来支持Java运行的,把其余的调试编辑一类的应用项都去除了!

编译环境

VC++6.0编译环境介绍(1) 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。原因是多方面的。大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试。但是,所谓:“公欲善其事,必先利其器”。如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢? Visual C++可新建的 Projects项目 Visual C++可新建的 File文件 Visual C++的Build设置

https://www.360docs.net/doc/5417146544.html,pile TEST.cpp选项只编译当前文件而不调用链接器或其它工具。输出窗口将显示编译过程检查出的错误或警告信息,在错误信息处单击鼠标右键,可以得到错误代码的位置 2. Build TEST.exe 选项对最后修改过的源文件进行编译和链接 3. Rebuild All选项该选项允许用户编译所有的源文件,而不管它们何时曾经被修改过 4. Batch Build选项该选项能单步重新建立多个工程文件,并允许用户指定要建立的项目类型.VC提供了两种目标应用程序类型 Win32 Release(发行版)、Win32 Debug(调试版)。 我们先来看一下VC的处理流程,大致分为两步:编译和连接。源文件通过编译生成了.obj文件;所有.obj文件和.lib文件通过连接生成.exe文件或.dll 文件。下面,我们分别讨论这两个步骤的一些细节。 工程配置对话框在这个对话框中,左上方的下拉列表框用于选择一种工程配置,包括有Win32 Debug、Win32 Release和All Configurations(指前两种配置一起),某些选项在不同的工程配置中有不同的缺省值。左边的树形视图给出了当前工程所有的文件及分类情况。如果我们把工程“Schedule”置为高亮显示(正如图9-1那样),对话框的右边就会出现总共十个选项卡,其中列出了与工程有关的各种选项,不少选项卡中有一个Reset按钮,按下它后可以把选项卡内的各项设置恢复到生成工程时的初始值。如果我们在树形视图中选择一个文件类或一个文件,那么对话框右边的选项卡会自动减少到一个或两个,其中列出的都是与选中的文件类或文件有关的选项。 编译参数的设置。主要通过VC的菜单项Project->Settings->C/C++页来完成。我们可以看到这一页的最下面Project Options中的内容,一般如下:

ubuntu10.04全过程创建交叉编译环境

ubuntu10.04下建立交叉编译工具链(支持软浮点)全过程 参考了网上的不少的资料,花了五个小时终于完成了,记录下全过程供大家分享。 用到的源码包如下,建议新手全部放在/home/usr/downloads/ 目录下。以下操作在用户权限下进行。 ======================================================================= arm-linux-gcc-3.4.1.tar.gz glibc-2.3.3.tar.gz linux-2.6.8.tar.gz crosstool-0.43.tar.gz binutils-2.15.tar.gz glibc-linuxthreads-2.3.3.tar.gz binutils-2.18.tar.gz --安装用 编译一次至少要花半个小时,如果因为依赖软件没有安装中途会报错退出,只有从头再来,那样很浪费时间的。 sudo apt-get install bison flex build-essential patch libncurses5-dev 由于ubuntu10.04自带的ld ,as版本太高的原因,需要安装binutils的2.18版本,然后替换系统中的2.20版本。方法如下: $cd downloads $tar xzvf binutils-2.18.tar.gz $cd binutils-2.18 $./configure --prefix=/tmp/binutils --disable-nls (-prefix后面的是生成可执行文件存放的位置可以自己定义) $make all $make install 编译成功后在/tmp/binutils/bin/中就生成了ld和as程序的可执行文件 重新链接/usr/bin/ld 和/usr/bin/as文件 $sudo rm /usr/bin/ld /usr/bin/as //删除2.20的ld,as $sudo ln –s /tmp/binutils/bin/ld /usr/bin/ $sudo ln –s /tmp/binutils/bin/as /usr/bin/ 然后可运行ld –v 和as –v 查看版本是否为2.18。 安装2.18版本可解决出现的 ld as " version too old "问题。 2. ubuntu10.04下默认的GCC版本是4.4.3,但这个不是版本越高越好,版本太高,对语法什么的要求也高,编译不成功,降低版本吧: #sudo apt-get install gcc-4.1 //安装4.1的GCC,需要联网 #sudo rm /usr/bin/gcc //删除之前4.4.3的快捷方式,4.4.3的GCC并未删除#sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc //建立4.1的快捷方式 这是由于crosstool中定义了GCC的版本的上下线,最高也就到4.1,在其配置的时候会对这个版本信息进行检测,不在其规定范围就报错了。 3.修改sh版本 如果运行

005_MyEclipse中编译环境和运行环境不一致的问题

MyEclipse中编译环境和运行环境不一致的问题 2012/9/12 常常我们在开发java程序的时候我们会遇到如下图所示的错误 为什么会出现这样一个问题主要是因为运行环境版本过低或则说是编译环境版本过高的问题,也就是说我们java程序使用高版本的编译器编译的而放到低版本的运行环境中运行,在高版本编译环境中编译的时候会用高版本的java规范来编译、解析java源程序,放到低版本的运行环境中后找不到高版本的里面用到的API,所以会报这样的错误 解决的问题当然是有两个: 1是用较低版本的编译环境来编译源代码,这个时候也就会限制在开发的过程中用到高版本JDK的新特性 2用较高版本的运行环境去运行在较高版本的编译去编译出来的代码 我们可以在建立一个java工程的时候就选择这些项:

上图是我们建立JavaProject的时候出现的界面,我们先看画红线1处,一般我们在MyEclipse中都会用MyEclipse默认自带的运行环境,这里面运行环境是JRE1.5点击画红线2处我们我们可以看到以下界面

我们看划红线的2处有这里是MyEclipse中自带的JRE我们可以点击1处添加一个我们想要的JRE,一般都是我们电脑中安装的JDK中代的JRE

这里我们可以点击划红线处选择我们我的运行环境

我们再找到我们安装JDK的时候会有上面如图的目录结构 划红线1处jdk1.6.0_10这里面是既有开发环境又有运行环境我们可以选它(个人习惯选它) 划红线2处jre6是我们的运行环境我们也可以选它 选择后我们可以点击3处确定然后有如下界面出现:

我们点击OK即可最后回到初始界面我们选择一下便会有

(环境管理)C的运行环境和过程

【目的与要求】 1.了解Dos、Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 【上机内容】 【基础知识】 通过课堂上学习,我们对C语言已有了初步了解,对C语言源程序结构有了总体的认识,那么如何在机器上运行C语言源程序呢?任何高级语言源程序都要“翻译”成机器语言,才能在机器上运行。“翻译”的方式有两种,一种是解释方式,即对源程序解释一句执行一句;另一种是编译方式,即先把源程序“翻译”成目标程序(用机器代码组成的程序),再经过连接装配后生成可执行文件,最后执行可执行文件而得到结果。 C语言是一种编译型的程序设计语言,它采用编译的方式将源程序翻译成目的程序(机器代码)。运行一个C程序,从输入源程序开始,要经过编辑源程序文件(·C)、编译生成目标文件(·obj)、连接生成可执行文件(·exe)和执行四个步骤。 下面主要介绍Turbo C下运行C语言源程序。 Turbo C是美国Borland公司推出的IBM PC系列机的C语言编译程序。它具有方便、直观、易用的界面和丰富的库函数。它向用户提供了集成环境,把程序的编辑、编译、连接和运行等操作全部集中在一个界面上进行,使用十分方便。 1 Turbo C工作环境介绍 一个C语言程序的实施是从进入Turbo C的集成环境开始的,而进入C语言的环境,一般有两种途径:从DOS环境进入和从Windows环境进入。 (1) 从DOS环境进入: 在DOS命令行上键入: C>CD \TC↙(指定当前目录为TC子目录) C>TC↙(进入Turbo C环境)

交叉编译环境的搭建简介(精)

交叉编译环境的搭建简介 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture、操作系统(Operating System。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。 有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。 交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比如C代码编译(compile成计算机可以识别和执行的二进制代码。比如,我们在Windows平台上,可使用Visual C++开发环境,编写程序并编译成可执行程序。这种方式下,我们使用PC 平台上的Windows工具开发针对Windows本身的可执行程序,这种编译过程称为native compilation,中文可理解为本机编译。然而,在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和 运算能力,比如常见的 ARM 平台,其一般的静态存储空间大概是16到32MB,而CPU的主频大概在100MHz到500MHz之间。这种情况下,在ARM 平台上进行本机编译就不太可能了,这是因为一般的编译工具链(compilation tool chain需要很大的存储空间,并需要很强的CPU 运算能力。为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,我们就可以在CPU能力很强、存储控件足够的主机平台上(比如PC上编译出针对其他平台的可执行程序。

实验1 C语言的运行环境和运行过程#完成

实验一C语言的运行环境和运行过程 班级电信132 学号201315100221 姓名林青辉 一、实验目的 1、掌握c程序设计编程环境visual c++,掌握运行一个c程序设计的基本步骤,包括编辑、编译、连接和运行。 2、掌握c语言程序设计的基本框架,能够编写简单的c程序。 3、了解程序调试的思想,能找出并改正c程序中的语法错误。 二、实验内容 1、在“我的电脑”上新建一个文件夹,用于存放c程序,文件夹名字可以是学号姓名。 2、调试示例,在屏幕上显示一个短句“Hello World!”。 源程序 #include void main() { printf(“Hello World!\n”); } 运行结果: Hello World! 基本步骤:(要求熟练掌握) (1)启动VC++ “开始”->“程序”->“Microsoft Visual Studio 6.0”->“Microsoft Visual C++6.0”进入VC++编程环境。 (2)新建文件(*.cpp) “文件”->“新建”,单击“文件”选项卡,选择“C++Source Files”,修改文件保存“目录”和“文件”(文件名),单击“确定”。 (3)编辑和保存(注意:源程序一定要在英文状态下输入,即字符标点都要在半角状态下,同时注意大小写,一般都用小写) 在编辑窗口输入源程序,然后执行“文件”->“保存”或“文件”->“另存为” (4)编译(*.obj)用来检查语法错误 “编译”->“编译”或Ctrl+F7,在产生的工作区队话框中,选择“是”。 (5)连接(*.exe) “编译”->“构件”或F7 (6)运行 “编译”->“执行”或Ctrl+F5 (7)关闭程序工作区 “文件”->“关闭工作区” (8)打开文件 “文件”->“打开” (9)查看C源文件、目标文件和可执行文件的存放位置。

实验二:交叉编译环境的建立

实验二:交叉编译环境的建立 一.实验目的 通过本实验,使学生掌握交叉编译环境的建立,了解在S3C2410平台上交叉编译的工作方式和原理。 二.实验原理和说明 1、minicom 用法: minicom 是安装REDHAT 时安装的软件,它使用配置文件/etc/minirc.dfl,华恒光盘安装时会提供这个文件。 【注意】 minicom 占用串口,能且仅能启动一个minicom,启动第二个时就会报错: Device /dev/modem is locked。其中/dev/modem 就是/dev/ttyS0,即PC 机串口1,它是在光盘安装时执行./arminst 时创建的链接。查看arminst 文件,可以看到如下一行: ln -sf /dev/ttyS0 /dev/modem minicom 所有的操作都以ctrl+A 开始,例如:退出为ctrl+A,松手后再按下Q,则弹出如下一个小框:选Yes 即可退出minicom。 minicom 中最重要的操作就是对其进行配置的修改。这个操作要先ctrl+A,松手后按下o(是字母o,option 之意,不是零),则弹出如下框: 选择第三项“Serial port setup”,则弹出下面框: 键入E 则弹出如下框,可改变波特率:

若要使用PC 机的串口2 来接开发板的串口1 做监控,则要在串口配置框中选择A,即“Serial Device”,则原来的配置框第一行进入编辑模式,将原来的/dev/modem 改为如下的:/dev/ttyS1,即串口2。 退出配置框只需连续按ESC 键即可返回。 2、HHARM9-EDU目录结构介绍 安装过我们提供的光盘以下,会在您的PC机上建立一个HHARM9-EDU的目录。在shell提示符下执行ls命令,可以显示整个PC上的目录结构: [root@…. root]# cd / [root@…. /]# ls HHARM9-EDU boot lost+found opt sbin usr dev home proc tftpboot var initrd misc root tmp bin etc lib mnt [root@….. /]# 其中在PC机(宿主机)的根目录下安装了HHARM9-EDU的目录和opt目录,其中HHARM9-EDU是开发套件的源代码、驱动、以及相应的应用程序。opt是ARM的编译器存放的目录。进入HHARM9-EDU看看。 [root@……. /]# cd / HHARM9-EDU [root@HHARM9-EDU /] # ls Images applications kernel opt.tgz gprs-ppp minirc.dfl ppcboot-2.0.0 record-image SJF 下面对以上目录作简单介绍: (1) /HHARM9-EDU/SJF/ JTAG烧写工具源码目录,在该目录下执行make,即可生成JTAG烧写工具SJF2410,它就是我们通过JTAG烧写ppcboot要用到的文件。 (2) /HHARM9-EDU/ppcboot/ bootloader源码目录,在该目录下简单的make即可生成HHARM9-EDU的bootloader - ppcboot.bin,可以通过修改这些源码来修改bootloader。 『说明』在嵌入式系统中,我们把引导系统的初始化部分的代码统称为bootloader,相当于PC机的BIOS。但在我们提供的很多套件中,有的引导代码用的是ppcboot,有的是u-boot,有的是bootloader等等,但实际烧写到flash中的文件一般为ppcboot.bin、u-boot.bin、bootloader.bin等二进制代码文件。

MTK编译环境搭建

MTK编译环境搭建 系统说明:win7 64位系统。 工具软件: (1)RVDS_3_1.zip (2)rvds4cr.zip (3)ActivePerl-5.16.2.msi (4)RVCT3.1_1021.zip 一、安装RVCT步骤 1. 将桌面主题设置为“Windows经典”(点击右键--->个性化)。 2. 解压并打开RVDS_3_1文件夹; 点击setup.exe右键进入属性--兼容性; 以兼容模式运行,选框选中Windows XP(Service Pack 3); 应用确认并退出。 3. 双击setup.exe运行,一步步安装完成。 4. 复制..\rvds4cr\rvds4.crack文件夹下所有文件到C:\Program Files\ARM目录下; 双击crack.bat,等待运行结束。 5. 开始菜单--->所有程序--->ARM--->点击运行License Wizard v4.1---> 下一步--->多选框选择“Install License”; 如下图所示,选择C:\Program Files\ARM\License目录下的License.dat; 然后add,下一步完成。 6. 重启电脑,重启之后再cmd .exe里面输入armcc验证是否安装ok。

二、安装perl 1. 运行ActivePerl-5.16. 2.msi直接一步步安装即可; 2.cmd .exe里面输入perl -vsn验证是否安装ok。 三、升级RVCT至3.1_1021 1、解压RVCT3.1_1021.zip,替换目录C:\Program Files\ARM下的RVCT和Licenses中相关的文件。 2、双击解压文件夹中的注册表文件env.reg进行注册表更新。 3、cmd .exe里面输入armcc验证RVCT是否已升级至RVCT3.1_1021。

搭建ppc交叉编译环境

搭建powerpc交叉编译环境 V0.1 ALL Rights Reserved, Copyright ? FUJITSU LIMITED 2013

改版履历 修改日期修改原因版本修改者2013/2/18 初版制成V0.1 yaoxt

目录 1 下载交叉编译器 (4) 1.1从本地共享下载 (4) 1.2 从ftp下载 (4) 2 安装交叉编译器 (4) 2.1 创建挂载点 (4) 2.2 挂载镜像文件 (4) 2.3 安装交叉编译器 (5) 3 配置用户.bashrc文件 (5) 3.1 在用户目录下打开.bashrc文件: (5) 3.2 添加交叉编译器可执行文件路径: (5) 3.3 指定目标机架构类型: (5) 3.4 指定交叉编译器: (5) 4 安装后测试 (6) 5 编译mpc85xx内核 (6) 5.1 下载linux内核源码 (6) 5.2 编译mpc85xx内核 (6) 5.2.1 生成.config配置文件 (7) 5.2.2 配置内核编译选项 (7) 5.2.3 编译内核 (7) 5.2.4 编译动态模块 (7) 5.2.5 安装模块 (7) 5.2.6 生成开发板mpc8544ds的dtb文件 (8)

1下载交叉编译器 ELDK是Embeded Linux Development Kit的缩写,它是德国denx提供的供PowerPC嵌入式Linux移植的完整开发环境编译套件,有:gcc,gdb,binutils等。Eldk目前支持多种PowerPC 处理器: ●ppc_8xx ------> MPC8xx处理器 ●ppc_4xx ------> 不带FPU的IBM 4xx处理器 ●ppc_4xxFP ------> 带FPU 的IBM 4xx 处理器 ●ppc_6xx ------> 6xx处理器 ●ppc_74xx ------> 74xx处理器 ●ppc_85xx ------> 不带DPU的MPC85xx处理器 ●ppc_85xxDP ------> 带DPU 的MPC85xx处理器 1.1从d enx的ftp下载 下载地址:http://ftp.denx.de/pub/eldk/ 本文选用的交叉编译工具的版本为ppc-2008-04-01.iso,下载地址: http://ftp.denx.de/pub/eldk/4.2/ppc-linux-x86/iso/ 1.2 从本地ftp下载 为方便公司内部下载使用,已将ppc-2008-04-01.iso镜像文件下载后上传至本地ftp,ftp地址为:xxxxx 2 安装交叉编译器 2.1 创建挂载点 命令:mkdir /mnt/cdrom 说明:该命令的目的是创建一个镜像文件的挂载点,挂载点/mnt/cdrom 的目录名称和路径可自定义 2.2 挂载镜像文件 命令:sudo mount –o loop ppc-2008-04-01.iso /mnt/cdrom

实验一 交叉编译环境的建立和bootloader的使用

实验一交叉编译环境的建立和bootloader的使用 实验目的 1.建立嵌入式软件的交叉编译环境。 2.下载和使用bootloader。 实验内容 1.安装串口支持文件。 2.安装编译器。 3.安装bootloader。 4.下载内核并运行。 嵌入式LINUX开发环境有几个方案: 1.基于PC机WINDOWS操作系统下的CYGWIN; 2.在WINDOWS下安装虚拟机后,再在虚拟机中安装LINXUX操作系统; 3.直接安装LINUX操作系统。 基于WINDOWS的环境要么有兼容性问题,要么速度有影响,所以我推荐大家使用纯LINUX操作系统开发环境。我们实际的开发环境为REDHAT9,它已经支持中文,并且包含了绝大部分的开发工具,不用担心装了LINUX就不能使用WINDOWS的问题。一般的情况都是用户已经有了WINDOWS操作系统,再安装LINUX,LINUX会自动安装一个叫作GRUB的启动引导软件,可以选择引导多个操作系统。绝大多数Linux 软件开发都是以native 方式进行的,即本机(HOST)开发、调试,本机运行的方式。这种方式通常不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在本机(即板子上系统)运行开发工具和调试工具。通常的嵌入式系统的软件开发采用一种交叉编译调试的方式。交叉编译调试环境建立在宿主机(即一台PC 机)上,对应的开发板叫做目标板。运行Linux 的PC【宿主机】开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码(这种可执行代码并不能在宿主机上执行,而只能在目标板上执行),然后把可执行文件下载到目标机上运行。调试时的方法很多,可以使用串口,以太网口等,具体使用哪种调试方法可以根据目标机处理器提供的支持做出选择。宿主机和目标板的处理器一般不相同,宿主机为Intel 处理器,而目标板如UP-NetARM2410-S 开发板为三星S3c2410.GNU 编译器提供这样的功能,在编译器编译时可以选择开发所需的宿主机和目标机从而建立开发环境。所以在进行嵌入式开发前第一步的工作就是要安装一台装有指定操作系统的PC

实验一 C语言的运行环境和运行过程

实验一C语言的运行环境和运行过程 实验目的: 1.掌握c程序设计编程环境visual c++,掌握运行一个c程序设计的基 本步骤,包括编辑、编译、连接和运行。 2.掌握c语言程序设计的基本框架,能够编写简单的c程序。 3.了解程序调试的思想,能找出并改正c程序中的语法错误。 实验内容: 1.在“我的电脑”上新建一个文件夹,用于存放c程序,文件夹名字可 以是学号姓名。 2.调试示例,在屏幕上显示一个短句“Hello World!”。 源程序 #include void main() { printf(“H ello World!\n”); } 运行结果: Hello World! 基本步骤:(要求熟练掌握) 1)启动VC++ “开始”->“程序”->“Microsoft Visual Studio 6.0”->“Microsoft Visual

C++6.0”进入VC++编程环境。 2)新建文件(*.cpp) “文件”->“新建”,单击“文件”选项卡,选择“C++Source Files”,修 改文件保存“目录”和“文件”(文件名),单击“确定”。 3)编辑和保存(注意:源程序一定要在英文状态下输入,即字符 标点都要在半角状态下,同时注意大小写,一般都用小写) 在编辑窗口输入源程序,然后执行“文件”->“保存”或“文件” ->“另存为” 4)编译(*.obj)用来检查语法错误 “编译”->“编译”或Ctrl+F7,在产生的工作区队话框中,选择“是”。 5)连接(*.exe) “编译”->“构件”或F7 6)运行 “编译”->“执行”或Ctrl+F5 7)关闭程序工作区 “文件”->“关闭工作区” 8)打开文件 “文件”->“打开” 9)查看C源文件、目标文件和可执行文件的存放位置。 源文件在保存目录下,目标文件和可执行文件在“保存目录 \Debug”中 3.编程,在屏幕上显示一个短句“this is my first c program.”。

实验三 交叉编译环境的搭建

实验三交叉编译环境的搭建 一、实验目的 1、掌握使用crosstool-0.43脚本创建交叉编译环境的方法 2、掌握搭建不同版本的Linux内核的交叉编译环境的方法 3、掌握在Linux系统中查看各种软件版本的方法 二、实验原理 ARM芯片搭建的硬件开发平台本身不具有编译能力,编译工作只能由PC机上的Linux 系统或PC机上用虚拟机安装的Linux系统担任,为了能开发出能在ARM硬件环境下运行的程序,PC机上的Linux系统或PC机上用虚拟机安装的Linux系统需要安装交叉编译环境,编译出ARM硬件环境能运行的程序。 ARM硬件环境要运行PC机上的Linux系统或PC机上用虚拟机安装的Linux系统开发出的程序,需通过网络文件共享系统进行,通过文件共享的方式将PC机上的Linux系统或PC机上用虚拟机安装的Linux系统开发出的程序共享到ARM硬件平台上。 三、实验步骤 1、相关软件的准备 1.1 运行环境介绍 PC机安装虚拟机VMware10.0、PC机Linux系统为RedHat AS5,、PC机Linux内核版本Linux2.6.34、PC机Linux系统gcc编译器版本为gcc-4.1.2、ARM硬件平台CPU 为s3c2410、ARM硬件平台Linux内核版本为Linux2.6.24.4。 1.2交叉编译器所需资源及下载地址 【binutils-2.16.1.tar.bz2】https://www.360docs.net/doc/5417146544.html,/gnu/binutils/ 【glibc-2.3.2.tar.bz2】https://www.360docs.net/doc/5417146544.html,/gnu/glibc/ 【glibc-linuxthreads-2.3.2.tar.bz2】https://www.360docs.net/doc/5417146544.html,/gnu/glibc/ 【linux-2.6.24.4.tar.bz2】https://www.360docs.net/doc/5417146544.html,/pub/linux/kernel/v2.6/ 【gdb-6.5.tar.bz2】https://www.360docs.net/doc/5417146544.html,/gnu/gdb/ 【gcc-4.1.1.tar.bz2】https://www.360docs.net/doc/5417146544.html,/gnu/gcc/gcc-4.1.1/ 【gcc-3.3.6.tar.bz2】https://www.360docs.net/doc/5417146544.html,/gnu/gcc/gcc-3.3.6/ 【linux-libc-headers-2.6.12.0.tar.bz2】https://www.360docs.net/doc/5417146544.html,/gnu/binutils/ 【crosstool-0.43.tar.bz2】https://www.360docs.net/doc/5417146544.html,/crosstool

C语言程序的运行环境

C语言程序的运行环境 使用TC的主要步骤 1、进入TC环境 ?在Windows下运行TC.EXE文件可以双击该文件 ?在DOS下运行该文件可输入如下行命令: D:\TC\TC (假设TC安装在D盘下) 2、输入程序 利用功能键F10,可使菜单File高亮显示,按回车键,可弹出File菜单,根据需要进行相应选择,如File / New,则原来在编辑窗口中的程序被清除,此时可以开始输入新程序。 3、编译、连接和运行程序 选择菜单Run / Run,若程序无误,编译和连接没有问题,程序将正常运行并自动转入用户屏幕,其上显示相应提示信息,要求用户输入两个整数,输入完毕屏幕返回到原编辑状态。 选择菜单Run / User Screem,切换到用户屏幕,可以查看程序的运行状态和最后运行结果. 按任意键返回原编辑窗口。 ?若编译或连接过程中有错,则系统在信息窗口指出错误,此时高亮条停留在信息窗口的第一条错误信息上,按回车键光标回到编辑窗口并找到需修改的位置。 4、保存文件 选择菜单File / Save,在弹出的提示框中输入程序的保存路径,如: d:\ex1_1.c 检查无误后,Ctrl+F9键(编译、连接和运行),再按Alt+F5键(观察运行结果),按任意键返回编辑窗口,并按功能键F2存盘。 选择菜单File / Write to,在对话框中输入新盘符和文件名存盘。 5、退出TC开发环境 选择菜单File / Exit,则可退出TC集成开发环境。 选择菜单File / Exit货按快捷键Alt+X退出TC开发环境。退出后请检查一下文件是否已保存到指定路径。 6、导入程序 ?选择菜单File / Load或按功能键F3,在出现的对话框内输入盘符和路径后按回车键,在出现的文件框中找到源程序文件名,按回车键把该文件导入TC环境。 ?在进入TC开发环境的同时导入文件,只需直接双击C源程序文件。

交叉开发环境搭建(交叉编译器安装)

课堂实验5 交叉开发环境搭建 -交叉编译器安装【实验目的】 掌握交叉编译器安装方法。 【实验要求】 完成交叉编译器的安装及使用。 【实验预习】 1 交叉编译器介绍 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码,而这种工具就是交叉编译器(cross compiler)。 2 搭建交叉编译环境 (1)实验环境 交叉编译工具:arm-linux- 3.4.6 编译平台:Redhat Enterprise 4 (2)安装arm-linux-gcc交叉编译器的方法 a 获得交叉编译器包,例如arm-linux-gcc-3.4.1.tar.bz2(里面有arm-linux-gcc命令)。 b 解压后修改环境变量配置文件/etc/profile,添加上arm-linux-gcc命令的路径。 c执行source /etc/profile使新配置生效。 (3)环境变量配置文件说明 /etc/profile,/etc/bashrc 是系统全局环境变量设定文件。 ~/.bashrc,~/.bashrc用户目录下的私有环境变量设定文件(~是root目录)。 如想将一个路径加入到环境变量$PATH中(以便在任何目录下都可以访问到该路径中的命令),可以像下面这样做: 方法1. 控制台中:使用export命令增加环境变量: 例如:# export PA TH=$PA TH:/usr/local/arm/2.95.3/bin 例如:# PATH="$PA TH:/my_new_path" (关闭shell,会还原PATH) 方法2. 修改profile文件:

相关文档
最新文档