Linux系统中如何编译C程序.ppt
《Linux系统中如何编译C程序.ppt》由会员分享,可在线阅读,更多相关《Linux系统中如何编译C程序.ppt(56页珍藏版)》请在三一办公上搜索。
1、Linux操作系统,上课教师:张利上课时间:2009年春季,Linux操作系统,Linux系统中如何编译C程序,登陆后用vi 写一个C程序:过程如下:vi HelloLinux.c 回车 进入后选择一种输入方式(a,i,o);#include main()printf(Hello Linux!n);,Linux操作系统,Linux系统中如何编译C程序,用Vi输入程序时,修改,编辑代码很复杂,可以用“application”中的“附件”的“文本编辑器”进行编辑#include main()printf(Hello Linux!n);,Linux操作系统,写完程序后Esc 并保存退出(:w“保存”
2、:q“退出”)然后用gcc 编译:gcc HelloLinux.c 回车 用ls 查看就会看到一个HelloLinux.out 文件,下面我们运行它;。/HelloLinux.out 回车 将会显示 Hello linux!,Linux操作系统,linux下对C代码的编译,在linux 下对C代码的编译时极其简单的,但是,不能忘记步骤。要进入自己所要的目录:cd 文件名 如果要是返回上级目录:cd 要查看下面的子目录:ls 或者ll 建立新目录:mkdir 文件名 删除空目录:rmdir 文件名 非空的rm 编译:gcc-o test test.c 输出:。/test,Linux操作系统,Li
3、nux平台下关于GCC编译及使用的方法,编译:第一步、是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程:gcc-E hello.c-o hello.i 预处理的宏定义插入到hello.i中 第二步、是将hello.i编译为目标代码,这可以通过使用-c参数来完成:gcc-c hello.i-o hello.o 也可以通过源文件直接生成 gcc-c hello.c 第三步、是将生成的目标文件链接成可执行文件:gcc hello.o-o hello 也可以通过源文件直接生成 gcc-o hello hello.c,Linux操作系统,警告:1、-pedantic 选项,那么使用了扩展
4、语法的地方将产生相应的警告信息 2、-Wall 使用它能够使GCC产生尽可能多的警告信息 3、-Werror,它要求GCC将所有的警告当成错误进行处理 库依赖:1、Linux下的大多数函数都默认:头文件放到/usr/include/目录下 而库文件则放到/usr/lib/目录下,Linux操作系统,2、GCC在编译时必须有自己的办法来查找所需要的头文件和库文件。-I选项可以向GCC的头文件搜索路径中添加新的目录。例如,如果在/home/xiaowp/include/目录下有编译时所需要的头文件,为了让GCC能够顺利地找到它们,就可以使用-I选项:gcc-o test test.c-I/home
5、/xiaowp/include-L选项向GCC的库文件搜索路径中添加新的目录 例如,如果在/home/xiaowp/lib/目录下有链接时所需要的库文件libfoo.so,为了让GCC能够顺利地找到它,可以使用下面的命令 gcc-o test test.c-L/home/xiaowp/lib-lfoo 值得好好解释一下的是-l选项,它指示GCC去连接库文件libfoo.so.,Linux操作系统,Linux下的库文件在命名时有一个约定,那就是应该以lib三个字母开头,由于所有的库文件都遵循了同样的规范,因此在用-l选项指定链接的库文件名时可以省去lib三个字母,也就是说GCC在对-lfoo进行
6、处理时,会自动去链接名为libfoo.so的文件。-static选项,强制使用静态链接库 如果在/home/xiaowp/lib/目录下有链接时所需要的库文件libfoo.so和libfoo.a 为了让GCC在链接时只用到静态链接库,可以使用下面的命令:gcc-o test test.c-L/home/xiaowp/lib-static-lfoo 选项-O可以告诉GCC同时减小代码的长度和执行时间,其效果等价于-O1.在这一级别上能够进行的优化类型虽然取决于目标处理器,但一般都会包括线程跳转(Thread Jump)和延迟退栈(Deferred Stack Pops)两种优化。,Linux操作
7、系统,选项-O2告诉GCC除了完成所有-O1级别的优化之外,同时还要进行一些额外的调整工作,如处理器指令调度等。选项-O3则除了完成所有-O2级别的优化之外,还包括循环展开和其它一些与处理器特性相关的优化工作。通常来说,数字越大优化的等级越高,同时也就意味着程序的运行速度越快。许多Linux程序员都喜欢使用-O2选项,因为它在优化长度、编译时间和代码大小之间,取得了一个比较理想的平衡点。time./test 查看程序执行时间 优化虽然能够给程序带来更好的执行性能,但在如下一些场合中应该避免优化代码:,Linux操作系统,程序开发的时候优化等级越高,消耗在编译上的时间就越长,因此在开发的时候最好
8、不要使用优化选项,只有到软件发行或开发结束的时候,才考虑对最终生成的代码进行优化。资源受限的时候一些优化选项会增加可执行代码的体积,如果程序在运行时能够申请到的内存资源非常紧张(如一些实时嵌入式设备),那就不要对代码进行优化,因为由这带来的负面影响可能会产生非常严重的后果。跟踪调试的时候在对代码进行优化的时候,某些代码可能会被删除或改写,或者为了取得更佳的性能而进行重组,从而使跟踪和调试变得异常困难。加速:使用管道代替编译中临时文件,-pipe 加速编译 gcc-pipe foo.c-o foo,Linux操作系统,GCC常用选项,-c 通知GCC取消链接步骤,即编译源码并在最后生成目标文件;
9、-Dmacro 定义指定的宏,使它能够通过源码中的#ifdef进行检验;-E 不经过编译预处理程序的输出而输送至标准输出;-g3 获得有关调试程序的详细信息,它不能与-o选项联合使用;-Idirectory 在包含文件搜索路径的起点处添加指定目录;-llibrary 提示链接程序在创建最终可执行文件时包含指定的库;-O、-O2、-O3 将优化状态打开,该选项不能与-g选项联合使用;-S 要求编译程序生成来自源代码的汇编程序输出;-v 启动所有警报;-Wall 在发生警报时取消编译操作,即将警报看作是错误;-Werror 在发生警报时取消编译操作,即把报警当作是错误;-w 禁止所有的报警。,Li
10、nux操作系统,构建linux下IDE环境-Eclipse,Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。2003年,Eclipse 3
11、.0选择OSGi服务平台规范为运行时架构。2007年6月,稳定版3.3发布。2008年6月发布代号为Ganymede的3.4版。,Linux操作系统,构建linux下IDE环境-Eclipse,Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C+和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。Eclipse 最初由OTI和IBM两家公司的IDE产品开发组
12、创建,起始于1999年4月。IBM提供了最初的Eclipse代码基础,包括Platform、JDT 和PDE。目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,Linux操作系统,构建linux下IDE环境-Eclipse,有150多家软件公司参与到Eclipse项目中,其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一个开发源码项目,它其实是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其开放源码,任何人都可以免费得到,并可以在
13、此基础上开发各自的插件,因此越来越受人们关注。近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。,Linux操作系统,构建linux下IDE环境-Eclipse,虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成
14、的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。,Linux操作系统,构建linux下IDE环境-Eclipse,这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于 Eclipse 的应用程序的突出例子是
15、 IBM 的 WebSphere Studio Workbench,它构成了 IBM Java 开发工具系列的基础。例如,WebSphere Studio Application Developer 添加了对 JSP、servlet、EJB、XML、Web 服务和数据库访问的支持。最近版本 3.4(Ganymede)/2008年6月25日,Linux操作系统,构建linux下IDE环境-Eclipse,Eclipse的主要组成Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Ec
16、lipse技术项目三个项目组成,具体包括四个部分组成Eclipse Platform、JDT、CDT和PDE.JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。,Linux操作系统,构建linux下IDE环境-Eclipse,Eclipse SDK(软件开发者包)是Eclipse Platform、JDT和
17、PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse项目生产的软件以 CPL发布,第三方组件有各自自身的许可协议。,Linux操作系统,构建linux下IDE环境-Eclipse,天文界的定义由于它指代“天体的部分或全部受其它天体的遮掩而变得晦暗”,我们可以将其引申为“使黯然失色”,用在英语写作或口语表达上会您增色不少。作名词时,eclipse常和介词in连用,如Fred w
18、as in eclipse,exiled to a small post in the south.(弗雷德失势了,被打发到南方去担任一个小差使。)作动词时,如:She is quite eclipsed by her clever younger sister.(在聪明的妹妹面前,她变得黯然失色。)另外,如果要强调“日全食”可用total solar eclipse来表达;“日偏食”则是partial solar eclipse。,Linux操作系统,构建linux下IDE环境-Eclipse,在linux 下构建java、c、c 的IDE.使用的环境是 red hat linux 9(编译
19、gnome2.4)一:下载所需软件(所有下载的软件均放在/opt下)先下载 Eclipse,网址为 目前,Eclipse 的最新版本為2.1.1,3.0 版也正在測試中。我使用eclipse2.1;下载其gtk 版本:执行 Eclipse是须用到JDK,但Eclipse 的安装程序和Red Hat Linux 9 里没有包含JDK,Sun 最新版本的 JDK可到 下载,在此我們使用的是sun jdk(J2SE)1.4.2_01 版(也可使用IBM 的jdk)。,Linux操作系统,要在Eclipse 上面开发C/C+程序,需要另外安装plug-ins,在此我们使用的是C/C+Developme
20、nt Tools(CDT)。CDT 整合了gcc、make、gdb 等GUN工具,(CDT 与Eclipse 中内建的JDT(Java开发环境)比起来,功能还差得远。例如,在JDT 中相當好用的Refactor、Refactoring、Organize Imports等 在CDT 中都没有。)CDT 可从http:/下载,目前最新版本为CDT 1.1 GA2.二:安装 1.由于cdt 需要gcc 等工具,所以要先把red hat9的软件开发包装上,2.安装JDK(需以root身分安装):,Linux操作系统,rootredarmy chmodx j2sdk-1_4_2_01-linux-i58
21、6-rpm.bin rootredarmy./j2sdk-1_4_2_01-linux-i586-rpm.bin rootredarmy rpmivh j2sdk-1_4_2_01-linux-i586-rpm.bin 安装好的JDK 会存在 目录中。设定JAVA_HOME,CLASSPATH,PATH;在/etc/profile文件最后加如下四行:export PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$CLASSPATH export CLASSPATH,Linux操作系统,3.安裝Eclipse,在此我把Eclipse 安装在/opt 下,安装Eclip
22、se 很简单,只要把下载回来的压缩包解压就可以了;解压后得到eclipse 目录;rootredarm 为让每一个帐号都可以执行Eclipse,我写了个小脚本(eclipse.sh):#!/bin/bash#执行#,Linux操作系统,/opt/eclipse/eclipse-vm/usr/java/j2sdk1.4.2_01/bin/java-data/workspace-vm 参数用以指定使用哪一个 jvm来执行Eclipse,#-date 参数用以指定Eclipse 的数据目录。在此指定其存在用户根目录()下的workspace 目录中 将eclipse.sh复制到/usr/loca
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 系统 如何 编译 程序
文档标签
- Linux操作系统实验报告
- LINUX操作系统
- Linux操作系统实用教程全集
- 我要学Linux操作系统
- Linux操作系统实用教程全集教学
- Linux操作系统案例教程电子教案第5章用户与组群管理课件
- eclipse调试以及step
- 操作系统第9章Linux系统课件
- Linux操作系统分析与实践
- Eclipse使用手册
- Eclipse教程
- linux操作系统应用
- 1半导体实验Linux操作系统简介
- Linux操作系统及程序设计
- linux操作系统结构
- Linux操作系统PPT教程04目录文件
- Linux操作系统实用教程
- Linux操作系统分析课件
- linux操作系统教程-实训与项目案例原稿
- Linux操作系统第9讲帐户管理和权限管理
链接地址:https://www.31ppt.com/p-5438115.html