当前位置:
文档之家› Linux系统中如何编译C程序
Linux系统中如何编译C程序
• • •
• • •
写完程序后Esc 并保存退出(:w ―保 存” :q ―退出”) 然后用gcc 编译: gcc HelloLinux.c 回车 用ls 查看就会看到一个HelloLinux.out 文件,下面我们运行它; 。/HelloLinux.out 回车 将会显示 Hello linux !
Linux操作系统
构建linux下IDE环境--Eclipse
•
有150多家软件公司参与到Eclipse项目中, 其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一个开发源码项目, 它其实是 Visual Age for Java的替代品,其界面 跟先前的Visual Age for Java差不多,但由于其 开放源码,任何人都可以免费得到,并可以在此 基础上开发各自的插件,因此越来越受人们关注。 近期还有包括Oracle在内的许多大公司也纷纷加 入了该项目,并宣称Eclipse将来能成为可进行 任何语言开发的IDE集大成者,使用者只需下载 各种语言的插件即可。
Linux操作系统
• • • • • • •
• 编译: • 第一步、是进行预编译,使用-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操作系统
Linux操作系统
构建linux下IDE环境--Eclipse
•
这种平等和一致性并不仅限于 Java 开发工 具。尽管 Eclipse 是使用 Java 语言开发的,但 它的用途并不限于 Java 语言;例如,支持诸如 C/C++、COBOL 和 Eiffel 等编程语言的插件已 经可用,或预计会推出。Eclipse 框架还可用来 作为与软件开发无关的其他应用程序类型的基础, 比如内容管理系统。 基于 Eclipse 的应用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它构 成了 IBM Java 开发工具系列的基础。例如, WebSphere Studio Application Developer 添加 了对 JSP、servlet、EJB、XML、Web 服务和 数据库访问的支持。 最近版本 3.4(Ganymede) / 2008年6月25日
Linux操作系统GCC源自用选项• -c 通知GCC取消链接步骤,即编译源码并在最后生成目标文件; • -Dmacro 定义指定的宏,使它能够通过源码中的#ifdef进行检 验; • -E 不经过编译预处理程序的输出而输送至标准输出; • -g3 获得有关调试程序的详细信息,它不能与-o选项联合使用; • -Idirectory 在包含文件搜索路径的起点处添加指定目录; • -llibrary 提示链接程序在创建最终可执行文件时包含指定的库; • -O、-O2、-O3 将优化状态打开,该选项不能与-g选项联合使 用; • -S 要求编译程序生成来自源代码的汇编程序输出; • -v 启动所有警报; • -Wall 在发生警报时取消编译操作,即将警报看作是错误; • -Werror 在发生警报时取消编译操作,即把报警当作是错误; • -w 禁止所有的报警。
Linux操作系统
linux下对C代码的编译 • 在linux 下对C代码的编译时极其简单 的,但是,不能忘记步骤。 要进入自己所要的目录:cd 文件名 如果要是返回上级目录:cd …… 要查看下面的子目录:ls 或者ll 建立新目录:mkdir 文件名 删除空目录: rmdir 文件名 非空的rm 编译 :gcc -o test test.c 输出:。/test
Linux操作系统
构建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.0选择 OSGi服务平台规范为运行时架构。 2007年6月, 稳定版3.3发布。2008年6月发布代号为 Ganymede的3.4版。
Linux操作系统
构建linux下IDE环境--Eclipse
• 虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。 Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件 主要针对希望扩展 Eclipse 的软件开发人员, 因为它允许他们构建与 Eclipse 环境无缝集成 的工具。由于 Eclipse 中的每样东西都是插件, 对于给 Eclipse 提供插件,以及给用户提供一 致和统一的集成开发环境而言,所有工具开发人 员都具有同等的发挥场所。
Linux平台下关于GCC编译及使用的方法
• 警告: • 1、-pedantic 选项,那么使用了扩展语法的 地方将产生相应的警告信息 • 2、-Wall 使用它能够使GCC产生尽可能多的 警告信息 • 3、-Werror,它要求GCC将所有的警告当成 错误进行处理 • 库依赖: • 1、Linux下的大多数函数都默认: • 头文件放到/usr/include/目录下 • 而库文件则放到/usr/lib/目录下
Linux操作系统
构建linux下IDE环境--Eclipse
• Eclipse的主要组成 Eclipse是一个开放源代码的软件开发项目, 专注于为高度集成的工具开发提供一个全功能的、 具有商业品质的工业平台。它主要由Eclipse项 目、Eclipse工具项目和Eclipse技术项目三个 项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE.JDT支持Java开发、 CDT支持C开发、PDE用来支持插件开发, Eclipse Platform则是一个开放的可扩展IDE, 提供了一个通用的开发平台。它提供建造块和构 造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无 缝集成的工具从而无须分辨一个工具功能在哪里 结束,而另一个工具功能在哪里开始。
•
•
•
• • •
程序开发的时候优化等级越高,消耗在编译上 的时间就越长,因此在开发的时候最好不要使用 优化选项,只有到软件发行或开发结束的时候, 才考虑对最终生成的代码进行优化。 资源受限的时候一些优化选项会增加可执行代 码的体积,如果程序在运行时能够申请到的内存 资源非常紧张(如一些实时嵌入式设备),那就 不要对代码进行优化,因为由这带来的负面影响 可能会产生非常严重的后果。 跟踪调试的时候在对代码进行优化的时候,某 些代码可能会被删除或改写,或者为了取得更佳 的性能而进行重组,从而使跟踪和调试变得异常 困难。 加速:使用管道代替编译中临时文件, -pipe 加速编译 gcc -pipe foo.c -o foo
Linux操作系统
构建linux下IDE环境--Eclipse
• Eclipse是著名的跨平台的自由集成开发环 境(IDE)。最初主要用来Java语言开发,但是 目前亦有人通过插件使其作为其他计算机语言比 如C++和Python的开发工具。Eclipse的本身只 是一个框架平台,但是众多插件的支持使得 Eclipse拥有其他功能相对固定的IDE软件很难 具有的灵活性。许多软件开发商以Eclipse为框 架开发自己的IDE。 Eclipse 最初由OTI和IBM两家公司的IDE产 品开发组创建,起始于1999年4月。IBM提供了 最初的Eclipse代码基础,包括Platform、JDT 和PDE。目前由IBM牵头,围绕着Eclipse项目 已经发展成为了一个庞大的Eclipse联盟
Linux操作系统
Linux系统中如何编译C程序 • 用Vi输入程序时,修改,编辑代码很复 杂,可以用“application‖中的“附件”的 “文本编辑器”进行编辑 #include main() { printf("Hello Linux !\n"); }
• • • • •
Linux操作系统
•
• •
•
• • •
选项-O2告诉GCC除了完成所有-O1级别的 优化之外,同时还要进行一些额外的调整工作, 如处理器指令调度等。 选项-O3则除了完成所有-O2级别的优化之外, 还包括循环展开和其它一些与处理器特性相关的 优化工作。 通常来说,数字越大优化的等级越高,同时 也就意味着程序的运行速度越快。 许多Linux程序员都喜欢使用-O2选项,因为 它在优化长度、编译时间和代码大小之间,取得 了一个比较理想的平衡点。 time ./test 查看程序执行时间 优化虽然能够给程序带来更好的执行性能, 但在如下一些场合中应该避免优化代码: Linux操作系统
•
• • •
• • •
Linux下的库文件在命名时有一个约定,那就是应该 以lib三个字母开头,由于所有的库文件都遵循了同样 的规范,因此在用-l选项指定链接的库文件名时可以 省去lib三个字母,也就是说GCC在对-lfoo进行处理 时,会自动去链接名为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操作系统