000编程基础----GCC程序编译

GNU C Compiler 多平台编译器,是GNU的代表作之一。

GCC编译器可以编译链接C\C++\汇编成可执行文件,可执行文件没特殊后缀,看属性。

预处理 编译 汇编 链接

Gcc通过后缀来区分不同类型文件

.c C语言源代码文件

.a库文件 由目标文件构成的库文件

.C .cc .cxx C++源代码文件

.h 头文件

.i 已经预处理过的C源代码文件

.ii 已经预处理过的C++源代码文件

.o 编译后的目标文件

.s 汇编语言源代码文件

.S 经过预编译的汇编语言源代码文件

预处理:把宏展开

-o 指定输出的可执行文件的文件名,如果没有,则默认输出文件名字为:a.out。 gcc hello.c -o hello

-c 只编译,不连接成为可执行文件,编译器只是由输入的.c等源文件代码,生成.o为后缀的目标文件。 gcc -c hello.c

-g产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序进行调试,就必须加入这个选项。 gcc -g hello.c -o hello

-O -O2:对程序进行优化,后面的优化程度更深。

gcc optimize.c -o optimize

time ./optimize

gcc -O optimize.c -o optimize

time ./optimize

对比两种,优化后,明显变好。

-Idirname:将dirname所指出的目录加入到程序头文件目录列表中。

C程序中的头文件包含两种情况:

#include <A.h>

#include "B.h"

对于<>,预处理程序cpp在系统预设的头文件目录(/usr/include)中搜寻相应的文件;

对于“”,cpp在当前目录中搜寻头文件。如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。

例如: gcc foo.c -I/home/include -o foo

-Ldirname:将dirname所指出的目录加入到库文件的目录列表中。在默认状态下,连接程序ld在系统的预设路径中(如/usr/lib)寻找所需要的库文件,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后再到系统预设路径中寻找。

-lname 在连接时,装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。例如,-lm表示连接名为libm.a的数学函数库。

例:gcc foo.c -L/home/lib -lfoo -o foo

-static :静态连接库文件

默认是动态链接。

编译选项:

-Wall :生成所有警告信息

-w :   不生成任何警告

-DMACRO:-DYES:相当于在程序中使用#define YES

#include <stdio.h>

//#define YES

void main()

{

#ifdef YES

  printf("hello");

#endif

}

运行命令:

gcc -DYES hello.c -o hello

./hello

则,可以输出hello。

000编程基础----GCC程序编译

时间: 2024-10-09 21:03:42

000编程基础----GCC程序编译的相关文章

001编程基础----GDB程序调试

一.GDB是GNU发布的程序调试工具.有三方面功能: 1.启动被调试程序. 2.让被调试程序在指定位置停住. 3.当程序被停住时,可以检查程序状态(如变量值). 二.GDB调试步骤: 1.编译生成可执行文件 gcc -g hell.c -o hello 2.启动GDB gdb hello 3.在main函数处设置断点 break main(或b main) 4.运行程序 run 5.单步 next 6.继续运行 continue(或c) 7.退出GDB   quit 三.GDB命令的常用操作 l

0-15 GCC程序编译

用法:    gcc [...] filenames 例如:    gcc hello.c 输出:    a.out 过程:    hello.c 预变异 hello.i 编译后 hello.s 汇编后 hello.o 链接后 hello 预编译:         gcc -E hello.c -o hello.i 编译  :         gcc -S hello.i -o hello.s 汇编  :         gcc -C hello.s -o hello.o 链接  :      

1.GCC程序编译

Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大,性能优越的多平台编译器,是GNU的代表作之一.gcc可以在多个硬件平台上编译出可执行的程序,其执行效率与一般的编译器相比,效率要高20%~30%. GCC编译器能将C,C++语言源程序,汇编程序编译,链接成可以执行文件,在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件.使用GCC编译程序时,编译过程可以被细分为四个阶段: (1)预编译(Pre-Processing) (2)

[国嵌笔记][012][GCC程序编译]

GCC特点 GCC(GUN C Compiler)是GUN推出的功能强大.性能优越的多平台编译器.其执行效率与一般编译器相比平均效率要高20%~30%. GCC基本用法 gcc [options] filenames GCC编译流程 hello.c->预编译->hello.i->编译->hello.s->汇编->hello.o->链接->hello gcc -E hello.c -o hello.i   "-E"表示执行预处理 "

Shell脚本编程基础

什么是Shell 操作系统最外层的程序,shell通过提示符让用户输入,向操作系统解释该输入,然后处理来自操作系统的任何结果输出来,管理用户与操作系统之间的交互. Shell是一个用户跟操作系统之间的一个命令解释器.Shell是用户与Linux操作系统之间沟通的桥梁.用户可以输入命令执行,又可以利用 Shell脚本编程去运行. 为什么要用到shell shell是一个交互式程序,当用户输入一条命令,shell就解释一条,一次只处理一条命令.如果我们一些复杂操作,逐个敲命令工作量就会增大,因此,我

Linux下C语言编程基础学习记录

VIM的基本使用  LINUX下C语言编程 用gcc命令编译运行C语言文件 预处理阶段:将*.c文件转化为*.i预处理过的C程序. 编译阶段:将*.i文件编译为汇编代码*.s文件. 汇编阶段:将*.s文件转化为*.o的二进制目标代码文件. 链接阶段:将*.o文件转化为可执行文件. 生成可执行文件:将*.o转换为可执行文件. 执行可执行C语言文件. gcc常用选项列表 -c      只编译不链接,生成目标文件“.o” -S      只编译不汇编,生成编码代码 -E      只进行预编译,不做

第七章,shell编程基础

更多笔记点击查看 Linux学习从入门到打死也不放弃,完全笔记整理(持续更新) http://blog.51cto.com/13683480/2095439 笔记整理开始时间:2018年4月12日11:37:35 本章内容: 编程基础 脚本基本格式 变量 运算 条件测试 配置用户环境 编程基础: 程序:指令+数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤 一步一步实现,使用的时候一个一个依次调用就可以了 对象式:以数据为中

Android 网络编程基础之简单聊天程序

前一篇讲了Android的网络编程基础,今天写了一个简单的聊天程序分享一下 首先是服务端代码: 1 package com.jiao.socketdemo; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.IOException; 6 import java.io.InputStreamReader; 7 import java.io.OutputStreamWriter;

X86-64 CPU架构以及64 位GCC对程序编译处理的一些变化

X86-64 CPU架构以及64 位GCC对程序编译处理的一些变化 作者:Jochen1986 转载请注明出处:http://blog.csdn.net/youkawa/article/details/45458921 通用寄存器全部扩展到了64位,寄存器名称前面由R开头,如RAX, RBX, RCX, RDX, RSI和RDI: 指令指针(Instruction pointer).基址指针(base pointer)以及堆栈指针(stack pointer)也全部扩展到了64位,这些专用寄存器