Linux系统中如何编译C程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 要进入自己所要的目录:cd 文件名 • 如果要是返回上级目录:cd …… • 要查看下面的子目录:ls 或者ll • 建立新目录:mkdir 文件名 • 删除空目录: rmdir 文件名 非空的rm • 编译 :gcc -o test test.c • 输出:。/test
Linux操作系统
Linux平台下关于GCC编译及使用的方法
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.
• 然后用gcc 编译: • gcc HelloLinux.c 回车 • 用ls 查看就会看到一个HelloLinux.out
文件,下面我们运行它; • 。/HelloLinux.out 回车 • 将会显示 • Hello linux !
Linux操作系统
linux下对C代码的编译
• 在linux 下对C代码的编译时极其简单 的,但是,不能忘记步骤。
信息科学与技术学院
Linux操作系统
上课教师: 张利 上课时间: 2009年春季
Linux系统中如何编译C程序 • 登陆后用vi 写一个C程序:过程如下: • vi HelloLinux.c 回车 • 进入后选择一种输入方式(a ,i ,o); • #include • main() •{ • printf("Hello Linux !\n"); •}
• 例如,如果在/home/xiaowp/lib/目录下有链接时所 需要的库文件libfoo.so,为了让GCC能够顺利地找 到它,可以使用下面的命令
• gcc -o test test.c -L /home/xiaowp/lib -lfoo
• 值得好好解释一下的是-l选项,它指示GCC去连接
库文件libfoo.so.
Linux操作系统
Linux系统中如何编译C程序 • 用Vi输入程序时,修改,编辑代码很复
杂,可以用“application”中的“附件”的 “文本编辑器”进行编辑 • #include • main() •{ • printf("Hello Linux !\n"); •}
Linux操作系统
• 写完程序后Esc 并保存退出(:w “保 存” :q “退出”)
Linux操作系统
构建linux下IDE环境--Eclipse

Eclipse是著名的跨平台的自由集成开发环
境(IDE)。最初主要用来Java语言开发,但是
目前亦有人通过插件使其作为其他计算机语言比
如C++和Python的开发工具。Eclipse的本身只
是一个框架平台,但是众多插件的支持使得
Eclipse拥有其他功能相对固定的IDE软件很难
• 资源受限的时候一些优化选项会增加可执行代 码的体积,如果程序在运行时能够申请到的内存
资源非常紧张(如一些实时嵌入式设备),那就
不要对代码进行优化,因为由这带来的负面影响 可能会产生非常严重的后果。
• 跟踪调试的时候在对代码进行优化的时候,某 些代码可能会被删除或改写,或者为了取得更佳
的性能而进行重组,从而使跟踪和调试变得异常 困难。
• gcc -c hello.c
• 第三步、是将生成的目标文件链接成可执行文件:
• gcc hello.o -o hello
• 也可以通过源文件直接生成
• gcc -o hello hello.c
Linux操作系统
பைடு நூலகம்
• 警告: • 1、-pedantic 选项,那么使用了扩展语法的
地方将产生相应的警告信息 • 2、-Wall 使用它能够使GCC产生尽可能多的
Linux操作系统
构建linux下IDE环境--Eclipse
• 虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。 Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件 主要针对希望扩展 Eclipse 的软件开发人员, 因为它允许他们构建与 Eclipse 环境无缝集成 的工具。由于 Eclipse 中的每样东西都是插件, 对于给 Eclipse 提供插件,以及给用户提供一 致和统一的集成开发环境而言,所有工具开发人 员都具有同等的发挥场所。
Linux操作系统
构建linux下IDE环境--Eclipse

这种平等和一致性并不仅限于 Java 开发工
具。尽管 Eclipse 是使用 Java 语言开发的,但
它的用途并不限于 Java 语言;例如,支持诸如
C/C++、COBOL 和 Eiffel 等编程语言的插件已
经可用,或预计会推出。Eclipse 框架还可用来
• Eclipse 是一个开放源代码的、基于 Java 的 可扩展开发平台。就其本身而言,它只是一个框 架和一组服务,用于通过插件组件构建开发环境。 幸运的是,Eclipse 附带了一个标准的插件集, 包括 Java 开发工具(Java Development Tools, JDT)。 Eclipse最初是由IBM公司开发的替代商业 软件Visual Age for Java的下一代IDE开发环境, 2019年11月贡献给开源社区,现在它由非营利 软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。 2019年,Eclipse 3.0选择 OSGi服务平台规范为运行时架构。 2019年6月, 稳定版3.3发布。2019年6月发布代号为 Ganymede的3.4版。
用; • -S 要求编译程序生成来自源代码的汇编程序输出; • -v 启动所有警报; • -Wall 在发生警报时取消编译操作,即将警报看作是错误; • -Werror 在发生警报时取消编译操作,即把报警当作是错误; • -w 禁止所有的报警。
Linux操作系统
构建linux下IDE环境--Eclipse
具有的灵活性。许多软件开发商以Eclipse为框
架开发自己的IDE。
Eclipse 最初由OTI和IBM两家公司的IDE产
品开发组创建,起始于2019年4月。IBM提供了
最初的Eclipse代码基础,包括Platform、JDT
和PDE。目前由IBM牵头,围绕着Eclipse项目
已经发展成为了一个庞大的Eclipse联盟
作为与软件开发无关的其他应用程序类型的基础,
比如内容管理系统。
基于 Eclipse 的应用程序的突出例子是
IBM 的 WebSphere Studio Workbench,它构
成了 IBM Java 开发工具系列的基础。例如,
WebSphere Studio Application Developer 添加
• 选项-O3则除了完成所有-O2级别的优化之外, 还包括循环展开和其它一些与处理器特性相关的 优化工作。
• 通常来说,数字越大优化的等级越高,同时 也就意味着程序的运行速度越快。
• 许多Linux程序员都喜欢使用-O2选项,因为 它在优化长度、编译时间和代码大小之间,取得 了一个比较理想的平衡点。
• -I选项可以向GCC的头文件搜索路径中添加新的目 录。
• 例如,如果在/home/xiaowp/include/目录下有编 译时所需要的头文件,为了让GCC能够顺利地找到 它们,就可以使用-I选项:
• gcc -o test test.c -I /home/xiaowp/include
• -L选项向GCC的库文件搜索路径中添加新的目录
• time ./test 查看程序执行时间
• 优化虽然能够给程序带来更好的执行性能, 但在如下一些场合中应该避免优化代码:
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集大成者,使用者只需下载 各种语言的插件即可。
• 编译:
• 第一步、是进行预编译,使用-E参数可以让GCC在 预处理结束后停止编译过程:
• gcc -E hello.c -o hello.i
• 预处理的宏定义插入到hello.i中
• 第二步、是将hello.i编译为目标代码,这可以通过 使用-c参数来完成:
• gcc -c hello.i -o hello.o • 也可以通过源文件直接生成
警告信息 • 3、-Werror,它要求GCC将所有的警告当成
错误进行处理 • 库依赖: • 1、Linux下的大多数函数都默认: • 头文件放到/usr/include/目录下 • 而库文件则放到/usr/lib/目录下
Linux操作系统
• 2、GCC在编译时必须有自己的办法来查找所需要 的头文件和库文件。
了对 JSP、servlet、EJB、XML、Web 服务和
数据库访问的支持。
最近版本 3.4(Ganymede) / 2019年6月25日
Linux操作系统
构建linux下IDE环境--Eclipse
• Eclipse的主要组成 Eclipse是一个开放源代码的软件开发项目,
专注于为高度集成的工具开发提供一个全功能的、 具有商业品质的工业平台。它主要由Eclipse项 目、Eclipse工具项目和Eclipse技术项目三个 项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE.JDT支持Java开发、 CDT支持C开发、PDE用来支持插件开发, Eclipse Platform则是一个开放的可扩展IDE, 提供了一个通用的开发平台。它提供建造块和构 造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无 缝集成的工具从而无须分辨一个工具功能在哪里 结束,而另一个工具功能在哪里开始。
testlinux操作系统linux平台下关于gcc编译及使用的方法第一步是进行预编译使用e参数可以让gcc在预处理结束后停止编译过程gccehellocohelloi预处理的宏定义插入到helloi中第二步是将helloi编译为目标代码这可以通过使用c参数来完成gccchelloiohelloo也可以通过源文件直接生成gccchelloc第三步是将生成的目标文件链接成可执行文件gcchellooohello也可以通过源文件直接生成gccohellohelloc?编译???????????linux操作系统?警告?地方将产生相应的警告信息?警告信息?错误进行处理????1pedantic选项那么使用了扩展语法的2wall使用它能够使gcc产生尽可能多的3werror它要求gcc将所有的警告当成库依赖1linux下的大多数函数都默认头文件放到usrinclude目录下而库文件则放到usrlib目录下linux操作系统???2gcc在编译时必须有自己的办法来查找所需要的头文件和库文件
• 加速:使用管道代替编译中临时文件,
• -pipe 加速编译
• gcc -pipe foo.c -o foo
Linux操作系统
GCC常用选项
• -c 通知GCC取消链接步骤,即编译源码并在最后生成目标文件; • -Dmacro 定义指定的宏,使它能够通过源码中的#ifdef进行检
验; • -E 不经过编译预处理程序的输出而输送至标准输出; • -g3 获得有关调试程序的详细信息,它不能与-o选项联合使用; • -Idirectory 在包含文件搜索路径的起点处添加指定目录; • -llibrary 提示链接程序在创建最终可执行文件时包含指定的库; • -O、-O2、-O3 将优化状态打开,该选项不能与-g选项联合使
• 在这一级别上能够进行的优化类型虽然取决于目标 处理器,但一般都会包括线程跳转(Thread Jump) 和延迟退栈(Deferred Stack Pops)两种优化L。inux操作系统
• 选项-O2告诉GCC除了完成所有-O1级别的 优化之外,同时还要进行一些额外的调整工作, 如处理器指令调度等。
相关文档
最新文档