




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux培训讲义,基于Ubuntu,RHEL 1. 系统配置,makefile,教学内容,Linux下开发语言的选择 Linux的环境变量 Java环境配置 C+环境配置 开发环境选择 IDE vs 编辑器 makefile,Linux开发语言的选择,主流的可选择的主流开发语言清单:,Linux开发语言的选择,我们会用到的语言: c Linux的母语 c+ 高效的兼容c的面向对象语言 Java “跨平台设计良好的oo语言” Python 跨平台用来替代传统脚本的脚本 bash(shell) 最古老的脚本语言,Linux的环境变量,什么是环境变量 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数。 常用的环境变量 PATH 操作系统用来搜索文件的默认路径 PWD 当前工作目录,Linux的环境变量,设置环境变量 export 命令 例子:export test=value /etc/profile 启动计算机生效 .bashrc文件 登录之后生效 显示环境变量 显示全部环境变量:env命令 显示某个环境变量:echo变量名,Java环境配置,下载JDK 使用1.6+比较好。 解压到指定目录 设置环境变量:三个 JAVA_HOME=/data/Development/java/ PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH 测试:java -v,hello world 注意把新添加的JDK的bin目录追加在$PATH的最前面,这样当系统中安装有多个JDK版本时,程序会优先搜寻排在最前面的JDK版本。,C+环境配置,使用包管理器安装 yum或者apt-get安装。 yum: yum install gcc gcc-c+ apt-get: apt-get intall build-essential 自己编译一个gcc/g+ 不推荐,时间太长,容易出错 测试环境:gcc v,g+ -v,hello world,开发环境选择 IDE vs 编辑器,可选的IDE: eclipse +CDT,pyDev等。 code:blocks codelite anjunta Kdevelop 我们主要以eclipse为主。,开发环境选择 IDE vs 编辑器,eclipse+CDT的安装方法 下载eclipse for linux 解压到指定位置 下载CDT,放到eclipse的目录下 配置eclipse环境建立连接,代码格式等 测试环境Java工程,C+工程,开发环境选择 IDE vs 编辑器,可选的编辑器: emacs vim gedit Kate 我们主要以vim和gedit为主,makefile,回顾:C/C+代码是怎么变成程序的 预处理 编译 连接 生成汇编代码 生成机器码,makefile,问题提出: 当一个工程有很多源文件 文件依赖,编译繁琐,需要重新编译很多 gcc/g+编译器 make工具 makefile,makefile,依赖关系 依赖关系定义了最终应用程序的每个文件和源文件之间的关系。 在makefile中这些规则的写法如下: target: file1 file2 注意冒号后面的空格,文件之间的空格,makefile,依赖关系例子: myapp: main.o 2.o 3.o main.o: main.c main.c a.h 2.o: 2.c a.h b.h 3.o: 2.c b.h c.h,makefile,规则 规则定义了目标的生成方式,上面的例子中,要怎样重新生成2.o呢?正常情况下只需要用 gcc -c 2.c 但是如果需要指定头文件目录,或者为了今后的调试需要设置符号信息选项该怎么做? 注意:规则所在的行必须用制表符tab开头,否则会导致make错误。,makefile,make命令的选项和参数 k当make命令遇到错误的时候继续执行 n让make输出将要执行的操作步骤 f指定makefile的文件名,makefile,简单的makefile myapp: main.o 2.o 3.o gcc -o myapp main.o 2.o 3.o main.o: main.c a.h gcc -c main.c 2.o: 2.c a.h b.h gcc -c 2.c 3.o: 3.c b.h c.h gcc -c 3.c make -f Makefile,makefile,make处理makefile文件中的依赖关系,确定需要创建的文件以及创建顺序。虽然上面把myapp放在最前面,但是make能判断出创建文件的正确顺序。它调用在规则部分给出的命令用来创建相应的文件,同时会在执行时在屏幕上将命令显示出来。 测试:改变一个源文件看看makefile能否处理这个情况。,makefile,makefile中的注释 makefile中的注释以#开头,一直延续到这一行的结束,同C/C+的行注释/类似。,makefile,问题的产生: 上面基本上已经介绍了makefile的全部内容,但是在实际项目使用中还有一定的问题,比如项目中需要在不同的平台上更换编译器,项目目录结构发生变化等。 宏: 定义:macro=value 取消:macro= 引用:$macro,makefile,宏的作用: 设置编译器的选项 消除编译过程中的硬编码(hard code) 使用宏的makefile例子,makefile,all: myapp #which compiler CC = gcc #where are include files kept INCLUDE = . #options for development CFLAGS = -g -Wall -ansi #options for release #CFLAGS = -Wall -ansi myapp: main.o 2.o 3.o $CC -I$INCLUDE -o myapp main.o 2.o 3.o main.o: main.c a.h $CC -I$INCLUDE -c main.c 2.o: 2.c a.h b.h $CC -I$INCLUDE -c 2.c 3.o: 3.c b.h c.h $CC -I$INCLUDE -c 3.c,makefile,makefile的内置宏 $?: 列出当前目标所依赖的文件列表中比当前目标文件还要新的文件 $: 当前目标的名字 $: 当前依赖文件的名字 $*: 不包括后缀名的当前依赖文件的名字,makefile,多个目标 通常需要制作的目标文件不止一个,或者希望将多个规则集中到一处执行,通过扩展makefile即可达到这一目的。 例子: 给上面的例子增加两个选项: clean用来清除不需要的目标文件 Install用来将编译好的目标放到指定目录,makefile,INSTDIR = /usr/local/bin #where are include files kept INCLUDE = . #options for development CFLAGS = -g -Wall -ansi #options for release #CFLAGS = -Wall -ansi myapp: main.o 2.o 3.o $CC -I$INCLUDE -o myapp main.o 2.o 3.o main.o: main.c a.h $CC -I$INCLUDE -c main.c 2.o: 2.c a.h b.h $CC -I$INCLUDE -c 2.c 3.o: 3.c b.h c.h $CC -I$INCLUDE -c 3.c clean: -rm main.o 2.o 3.o install: if -d $INSTDIR; then cp myapp $INSTDIR; CHMOD a+x $INSTDIR/myapp; chmod og-w $INSTDIR/myapp; echo “Installed in $INSTDIR;“ else echo “$INSTDIR does not exist.“; fi;,makefile,注意事项: all只定义了myapp这一个目标,如果在执行make的时候没有指定目标,make的默认行为就是创建第一个目标all 增加了两个新的目标clean和install rm命令用-开头,意义是忽略rm命令的执行结果 clean命令没有依赖项,在执行make clean的时候,该项目对应的规则总会被执行。,makefile,install目标依赖于myapp,make知道必须首先创建myapp,然后才能执行制作该目标的所需要的其他命令。 用于制作install目标的规则由几个shell脚本命令组成。由于make命令在执行规则时会调用一个shell,并且会针对每个命令调用一个shell,这时候必须在上面每行代码的结尾加上一个反斜杠。让所有的shell脚本命令在逻辑上处于同一行,并作为一个整体只传递给一个shell执行。这个命令用开头,表示make在执行这些规则之前不会在标准输出上显示命令本身。,makefile,目标install顺序执行多个命令使目标安装到指定位置。本例中,在执行shell命令过程中,make不检测上一条命令是否成功。如果需要检测上调命令的执行结果,则可以将这些命令用&连接起来。,makefile,内置规则 make命令本身带有大量的内置规则,他们可以极大的简化makefile文件的内容。 例子 在源文件目录下执行: make foo,makefile,make有自己的内置规则,内置规则也叫做推导规则,推导规则使用一些宏定义,给变量重新赋值则可改变其默认行为。 例子: make cc=gcc CFLAGS=“-Wall -g” foo make p可以用来输出make的所有内置规则 因为这些内置规则,可以将makefile中用于制作目标的规则去掉,只需要指定依赖关系,这样就可以简化makefile。,makefile,运用内置规则的例子: myapp: main.o 2.o 3.o main.o: main.c a.h 2.o: 2.c a.h b.h 3.o: 3.c b.h c.h,makefile,后缀和模式规则 内置规则在使用的时候文件都是带有后缀的,所以给出带某个特定后缀的文件的时候,make知道用那个规则来创建带有另外一个不同后缀的文件。.c.o 增加一条新的后缀规则: 在makefile中增加一条语句,告诉make这个新的后缀名。然后就可以用这个新的后缀名来定义规则。,makefile,后缀语法 利用这个规则可以使新创建的文件保留源文件的前半部分但用新的后缀名替换老的后缀名。 例子:将cpp文件转换成.o文件 .SUFFIXES: .cpp .cpp.o $CC -xc+ $CFLAGS ISINCLUDE -c $,makefile,上面的特殊关系.cpp.o告诉make,将.cpp的文件转换成.o文件。使用这条规则的重点在于记住宏$将被扩展成起始文件(包含老的后缀名)的名字。 -xc+告诉make这个文件是c+文件,makefile,通配符语法可以用来匹配文件名,而不是依赖于文件的后缀名。 通配符定义 例子: %.cpp: %.o $CC -xc+ $CFLAGS -I$INCLUDE c $,makefile,make管理静态库 make用特殊的语法来管理库函数: lib(file.o) 上面这条语句的作用是把文件file.o增加到lib.a中。make用一个内置规则来管理库函数,这个规则常见形式如下: .c.a $CC -c $CFLAGS $ $AR $ARFLAGS $ $*.o,makefile,上面的宏的默认值分别是ar和选项rv。这个语法告诉make,必须使用两条规则才能从.c文件转换成.o文件。 第一条规则编译源文件 第二条规则是使用ar将新的目标文件增加到静态库当中。 例子:产生静态库,makefile,all: myapp #which compiler CC = gcc #where to install INSTDIR = /usr/local/bin #where are include files kept INCLUDE = . #options for development CFLAGS = -g -Wall -ansi #options for release #CFLAGS = -Wall -ansi #static libs MYLIB = mylib.a myapp: main.o $MYLIB $CC -o myapp main.o$MYLIB(3.o) main.o: main.c a.h 2.o: 2.c a.h b.h 3.o: 3.c b.h c.h clean: -rm main.o 2.o 3.o install: myapp if -d $INSTDIR; then cp myapp $INSTDIR; CHMOD a+x $INSTDIR/myapp; chmod og-w $INSTD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全方面培训课件
- 吊顶音响工程方案(3篇)
- 电力拆除改造工程方案(3篇)
- 安全教育防火培训课件
- 灯塔冷库改造工程方案(3篇)
- 猫咪线描绘画课件
- 基于真实情境的初中语文学习任务设计探究
- 农业无人机租赁服务在2025年市场拓展与渠道建设分析
- 防汛工程治理方案范本(3篇)
- 工程爆破施工方案(3篇)
- 软件行业基础知识培训课件
- 教案2025秋形势与政策纪念抗战胜利坚定民族信念抗战胜利80周年
- 卷烟零售户培训课件
- 2025年学法减分试题及答案
- 2025年中小学教师师德师风考试题库及答案
- DGTJ08-2090-2020 绿色建筑评价标准
- 2025年商业店铺出租合同(标准版)(可修改可打印)
- 设备采购质保金管理制度
- 互助友爱班级大家庭主题班会课件
- 中国目前各行业的现状
- 小学生情绪调适心理课件
评论
0/150
提交评论