开发工具安装系统配置makefil.ppt

上传人:max****ui 文档编号:12726420 上传时间:2020-05-19 格式:PPT 页数:43 大小:559KB
返回 下载 相关 举报
开发工具安装系统配置makefil.ppt_第1页
第1页 / 共43页
开发工具安装系统配置makefil.ppt_第2页
第2页 / 共43页
开发工具安装系统配置makefil.ppt_第3页
第3页 / 共43页
点击查看更多>>
资源描述
Linux培训讲义,基于Ubuntu,RHEL1.系统配置,makefile,教学内容,Linux下开发语言的选择Linux的环境变量Java环境配置C+环境配置开发环境选择IDEvs编辑器makefile,Linux开发语言的选择,主流的可选择的主流开发语言清单:,Linux开发语言的选择,我们会用到的语言:cLinux的母语c+高效的兼容c的面向对象语言Java“跨平台设计良好的oo语言”Python跨平台用来替代传统脚本的脚本bash(shell)最古老的脚本语言,Linux的环境变量,什么是环境变量环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数。常用的环境变量PATH操作系统用来搜索文件的默认路径PWD当前工作目录,Linux的环境变量,设置环境变量export命令例子:exporttest=value/etc/profile启动计算机生效.bashrc文件登录之后生效显示环境变量显示全部环境变量:env命令显示某个环境变量:echo变量名,Java环境配置,下载JDK使用1.6+比较好。解压到指定目录设置环境变量:三个JAVA_HOME=/data/Development/java/PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH测试:java-v,helloworld注意把新添加的JDK的bin目录追加在$PATH的最前面,这样当系统中安装有多个JDK版本时,程序会优先搜寻排在最前面的JDK版本。,C+环境配置,使用包管理器安装yum或者apt-get安装。yum:yuminstallgccgcc-c+apt-get:apt-getintallbuild-essential自己编译一个gcc/g+不推荐,时间太长,容易出错测试环境:gccv,g+-v,helloworld,开发环境选择IDEvs编辑器,可选的IDE:eclipse+CDT,pyDev等。code:blockscodeliteanjuntaKdevelop我们主要以eclipse为主。,开发环境选择IDEvs编辑器,eclipse+CDT的安装方法下载eclipseforlinux解压到指定位置下载CDT,放到eclipse的目录下配置eclipse环境建立连接,代码格式等测试环境Java工程,C+工程,开发环境选择IDEvs编辑器,可选的编辑器:emacsvimgeditKate我们主要以vim和gedit为主,makefile,回顾:C/C+代码是怎么变成程序的预处理编译连接生成汇编代码生成机器码,makefile,问题提出:当一个工程有很多源文件文件依赖,编译繁琐,需要重新编译很多gcc/g+编译器make工具makefile,makefile,依赖关系依赖关系定义了最终应用程序的每个文件和源文件之间的关系。在makefile中这些规则的写法如下:target:file1file2注意冒号后面的空格,文件之间的空格,makefile,依赖关系例子:myapp:main.o2.o3.omain.o:main.cmain.ca.h2.o:2.ca.hb.h3.o:2.cb.hc.h,makefile,规则规则定义了目标的生成方式,上面的例子中,要怎样重新生成2.o呢?正常情况下只需要用gcc-c2.c但是如果需要指定头文件目录,或者为了今后的调试需要设置符号信息选项该怎么做?注意:规则所在的行必须用制表符tab开头,否则会导致make错误。,makefile,make命令的选项和参数k当make命令遇到错误的时候继续执行n让make输出将要执行的操作步骤f指定makefile的文件名,makefile,简单的makefilemyapp:main.o2.o3.ogcc-omyappmain.o2.o3.omain.o:main.ca.hgcc-cmain.c2.o:2.ca.hb.hgcc-c2.c3.o:3.cb.hc.hgcc-c3.cmake-fMakefile,makefile,make处理makefile文件中的依赖关系,确定需要创建的文件以及创建顺序。虽然上面把myapp放在最前面,但是make能判断出创建文件的正确顺序。它调用在规则部分给出的命令用来创建相应的文件,同时会在执行时在屏幕上将命令显示出来。测试:改变一个源文件看看makefile能否处理这个情况。,makefile,makefile中的注释makefile中的注释以#开头,一直延续到这一行的结束,同C/C+的行注释/类似。,makefile,问题的产生:上面基本上已经介绍了makefile的全部内容,但是在实际项目使用中还有一定的问题,比如项目中需要在不同的平台上更换编译器,项目目录结构发生变化等。宏:定义:macro=value取消:macro=引用:$macro,makefile,宏的作用:设置编译器的选项消除编译过程中的硬编码(hardcode)使用宏的makefile例子,makefile,all:myapp#whichcompilerCC=gcc#whereareincludefileskeptINCLUDE=.#optionsfordevelopmentCFLAGS=-g-Wall-ansi#optionsforrelease#CFLAGS=-Wall-ansimyapp:main.o2.o3.o$CC-I$INCLUDE-omyappmain.o2.o3.omain.o:main.ca.h$CC-I$INCLUDE-cmain.c2.o:2.ca.hb.h$CC-I$INCLUDE-c2.c3.o:3.cb.hc.h$CC-I$INCLUDE-c3.c,makefile,makefile的内置宏$?:列出当前目标所依赖的文件列表中比当前目标文件还要新的文件$:当前目标的名字$:当前依赖文件的名字$*:不包括后缀名的当前依赖文件的名字,makefile,多个目标通常需要制作的目标文件不止一个,或者希望将多个规则集中到一处执行,通过扩展makefile即可达到这一目的。例子:给上面的例子增加两个选项:clean用来清除不需要的目标文件Install用来将编译好的目标放到指定目录,makefile,INSTDIR=/usr/local/bin#whereareincludefileskeptINCLUDE=.#optionsfordevelopmentCFLAGS=-g-Wall-ansi#optionsforrelease#CFLAGS=-Wall-ansimyapp:main.o2.o3.o$CC-I$INCLUDE-omyappmain.o2.o3.omain.o:main.ca.h$CC-I$INCLUDE-cmain.c2.o:2.ca.hb.h$CC-I$INCLUDE-c2.c3.o:3.cb.hc.h$CC-I$INCLUDE-c3.cclean:-rmmain.o2.o3.oinstall:if-d$INSTDIR;thencpmyapp$INSTDIR;CHMODa+x$INSTDIR/myapp;chmodog-w$INSTDIR/myapp;echoInstalledin$INSTDIR;elseecho$INSTDIRdoesnotexist.;fi;,makefile,注意事项:all只定义了myapp这一个目标,如果在执行make的时候没有指定目标,make的默认行为就是创建第一个目标all增加了两个新的目标clean和installrm命令用-开头,意义是忽略rm命令的执行结果clean命令没有依赖项,在执行makeclean的时候,该项目对应的规则总会被执行。,makefile,install目标依赖于myapp,make知道必须首先创建myapp,然后才能执行制作该目标的所需要的其他命令。用于制作install目标的规则由几个shell脚本命令组成。由于make命令在执行规则时会调用一个shell,并且会针对每个命令调用一个shell,这时候必须在上面每行代码的结尾加上一个反斜杠。让所有的shell脚本命令在逻辑上处于同一行,并作为一个整体只传递给一个shell执行。这个命令用开头,表示make在执行这些规则之前不会在标准输出上显示命令本身。,makefile,目标install顺序执行多个命令使目标安装到指定位置。本例中,在执行shell命令过程中,make不检测上一条命令是否成功。如果需要检测上调命令的执行结果,则可以将这些命令用thencpmyapp$INSTDIR;CHMODa+x$INSTDIR/myapp;chmodog-w$INSTDIR/myapp;echoInstalledin$INSTDIR;elseecho$INSTDIRdoesnotexist.;fi;,makefile,makefile和子目录有时我们希望把组成一个静态库的几个文件从主文件中分离出来,并将它们保存在一个目录中。用make来完成这个任务的方法有两个。,makefile,方法1:首先在子目录中编写出第二个makefile其作用是编译该目录下的源文件生成一个静态库,然后将生成的静态库copy到上一级的目录中。在上一级目录中的makefile包含一条用于生成静态库的规则,这条规则会调用第二个makefile:mylib.a:(cdmylibdir;$MAKE)#注意会避免使用新shellmake调用这条规则创静态库的时候,会切换到mylibdir中,然后调用新的make来管理函数库。,makefile,方法2:在原来的makefile中增加一些宏。新增宏通过在已经见过的宏的末尾追加规则:.c.o$CC$FLAGS-c$D/$F-o$D/$F上述规则编译子目录中的源文件并将目标文件放在该子目录中然后用下面的规则来更新当前目录下的静态库。mylib.a:mydir/2.omydir/3.oar-rvmylib.a$?,makefile,makefile总共包含两样东西:目标依赖关系目标的生成方法,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!