Linux编程环境及gcc基础知识

         Linux系统几个常用的版本本身就带有编译器,因此一般情况在Linux可以直接编译C/C++源代码,它使用的就是著名的gcc。

      GCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。它是一套  GNU编译器套装以 GPL 及 LGPL 许可证所发行的自由软件,也是 GNU计划的关键部分,亦是自由的类Unix及苹果电脑 Mac OS X 操作系统的标准编译器。
      
         GCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。它是一套  GNU编译器套装以 GPL 及 LGPL 许可证所发行的自由软件,也是 GNU计划的关键部分,亦是自由的类Unix及苹果电脑 Mac OS X 操作系统的标准编译器。
      
基本用法:在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。

  GCC最基本的用法是∶gcc [options] [filenames]
  其中options就是编译器所需要的参数,filenames给出相关的文件名称。
  -c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。
  -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
  -g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。
  -O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相             应地要慢一些。
  -O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。
  -Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶
  A)#include <a.h>
  B)#include “b.h”
  其中,A类使用尖括号(< >),B类使用双引号(“ ”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而B类,预处理程序在目标文件的文件夹内搜索相应文件。
基本规则——gcc所遵循的部分约定规则:
  .c为后缀的文件,C语言源代码文件;
  .a为后缀的文件,是由目标文件构成的档案库文件;
  .C,.cc或.cxx 为后缀的文件,是C++源代码文件且必须要经过预处理;
  .h为后缀的文件,是程序所包含的头文件;
  .i 为后缀的文件,是C源代码文件且不应该对其执行预处理;
  .ii为后缀的文件,是C++源代码文件且不应该对其执行预处理;
  .m为后缀的文件,是Objective-C源代码文件;
  .o为后缀的文件,是编译后的目标文件;
  .s为后缀的文件,是汇编语言源代码文件;
  .S为后缀的文件,是经过预编译的汇编语言源代码文件。

时间: 2024-11-05 20:26:23

Linux编程环境及gcc基础知识的相关文章

跟老男孩学Linux运维:Shell编程实战1.2 学好Shell编程所需的基础知识

1.2 学好Shell编程所需的基础知识 本节首先来探讨一下在学习Shell编程之前需要掌握的基础知识,需要说明的是,并不是必须具备这些基础知识才可以学习Shell编程,而是,如果具备了这些基础知识,那么就可以把Shell编程学得更好,领悟得更深.如果只是想简单地了解Shell脚本语言,那么就无须掌握太多的系统基础知识,只需要会一些简单的命令行操作即可. 学好Shell编程并通过Shell脚本轻松地实现自动化管理企业生产系统的必备基础如下: 1)能够熟练使用vim编辑器,熟悉SSH终端及".vi

编程所需的基础知识

编程所需的基础知识 编程所需的基础知识 想要在编程行业能够走的远,一些基础知识是不能少的,基础奠定了发展的方向.java私塾建议大家在学习java语言本身的同时学习一些其他计算机相关的基础课程. 1. 一定的英文阅读能力因为程序设计接触的很多文档都是以英文的形式提供的,而且新的技术资料都是英文的,要想第一手学会这些新技术就必须能看懂英文,多阅读英文资料,使用金山词霸等工具配合,长时间的处在这样的环境里,自然而然英语的阅读能力就提高了.一个阅读英文很困难的人,可以学会程序设计,但是不会有很深的造诣

Javascript &amp;amp; DHTML 实例编程(教程)基础知识_基础知识

[ 2007-04-11 14:31:50 | Author: never-online ] 这一节首先请下载JScript.chm这本手册,无论新手老手,有一本手册是免不了的,特别是对于新手,如果你没有空翻犀牛书,那么这本手册将是你了解这门语言的首选.下面所讲的大多数,手册上可以没有提及,或提及很少的内容. 以下的教程都是针对你对上面所说的JScript.chm这本手册了解的基础上而写的,如果你还没有看过JScript.chm,建议你先下载,边看手册,边看教程. JS的语法与大多数类C的语言差

Debian Linux下的Python学习——基础知识

python中的基本数据类型是数和字符串,下面是python的基础知识学习,包括数,字符串,变量,标识符,对象. 1. 数  在Python中数类型包括:整数.长整数.浮点数和复数. 2是一个整数. 长整数是大一些的整数. 3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4. (-5+4j)和(2.3-4.6j)是复数的例子.      输入代码:                        运行结果:                 

简单实现异步编程promise模式_基础知识

异步编程javascript异步编程, web2.0时代比较热门的编程方式,我们平时码的时候也或多或少用到,最典型的就是异步ajax,发送异步请求,绑定回调函数,请求响应之后调用指定的回调函数,没有阻塞其他代码的执行.还有像setTimeout方法同样也是异步执行回调的方法. 如果对异步编程还不太熟悉的话,直接戳 阮一峰大牛的教程 ,这篇文章介绍了四种异步编程的方式: 回调函数 事件监听 发布/订阅 promise模式 这几种方式的可维护性逐级递增,理解难度也逐级递增.这篇总结也是针对promi

Javascript模块化编程详解_基础知识

模块化编程是一种非常常见Javascript编程模式.它一般来说可以使得代码更易于理解,但是有许多优秀的实践还没有广为人知. 基础 我们首先简单地概述一下,自从三年前Eric Miraglia(YUI的开发者)第一次发表博客描述模块化模式以来的一些模块化模式.如果你已经对于这些模块化模式非常熟悉了,大可以直接跳过本节,从"进阶模式"开始阅读. 匿名闭包 这是一种让一切变为可能的基本结构,同时它也是Javascript最棒的特性.我们将简单地创建一个匿名函数并立即执行它.所有的代码将跑在

使用AmplifyJS组件配合JavaScript进行编程的指南_基础知识

事件分发的作用 在为页面添加各类交互功能时,我们熟知的最简单的做法就是为页面元素绑定事件,然后在事件处理函数中,做我们想要做的动作.就像这样的代码: element.onclick = function(event){ // Do anything. }; 如果我们要做的动作不复杂,那么实际逻辑功能的代码,放在这里是可以的.如果今后需要修改,再到这段事件处理函数的位置来修改. 再进一步,为了做适当的代码复用,我们可能会把逻辑功能中的一部分分拆到一个函数内: element.onclick = f

JavaScript函数学习总结以及相关的编程习惯指南_基础知识

null 和 undefinedUndefined相当于一个变量并没有明确的被赋值(是否被赋值, 可能无心忽略, 逻辑问题) JS的怪异之处就在于undefined真的是一个可以使用的值. > var foo; > foo undefined 同理,当缺失参数时 JavaScript 会分配一个 undefined: > function id(x) { return x } > id() undefined a = 1; a !== undefined // true a = u

JavaScript面向对象编程入门教程_基础知识

尽管面向对象JavaScript与其他语言相比之下存在差异,并由此引发了一些争论,但毋庸置疑,JavaScript具有强大的面向对象编程能力 本文先从介绍面向对象编程开始,然后回顾JavaScript对象模型,最后演示JavaScript中的面向对象编程概念. JavaScript回顾 如果你对诸如变量(variables).类型(types).函数(functions).以及作用域(scope)等JavaScript概念觉得心里没底,那么你可以阅读重新介绍JavaScript中的这些主题.你还