Linux(X):gcc入门

GCC简介

GNU C Compiler,同时也是一个交叉编译器,适用于跨平台的嵌入式开发

指令

  1. 编译: gcc hello.c -o hello ,-o 表示生成可执行文件

编译过程(可参考此博文

  1. 预处理(c源码文件->.i预编译文件)
  2. 编译(i文件->s汇编文件)
  3. 汇编(s汇编文件->o目标文件)
  4. 链接(o目标文件->可执行文件)

GCC支持的后缀名(见 man gcc Options Controlling the Kind of Output)

后缀名对应的语言
.cC源文件
.C/.cc/.cxxC++源文件
.mObject-C源文件
.i预处理的c源文件
.ii预处理的c++源文件
.s/.S汇编语言原始程序
.h预处理文件(头文件)
.o目标文件
.a/.so编译后的库文件,静态库(Archive libraries)和动态库(shared object libraries)

GCC使用参数分类(见 man gcc options

  1. 通用参数
  2. C参数
  3. C++参数
  4. Object-C参数
  5. 语言无关参数
  6. 警告参数
  7. 调试参数
  8. 优化参数
  9. 编译过程
    1. 预编译参数
    2. 汇编参数
    3. 链接参数
  10. 机器依赖参数

最常用的参数(见 man gcc synopsis

SYNOPSIS
       gcc [-c|-S|-E] [-std=standard]
           [-g] [-pg] [-Olevel]
           [-Wwarn...] [-Wpedantic]
           [-Idir...] [-Ldir...]
           [-Dmacro[=defn]...] [-Umacro]
           [-foption...] [-mmachine-option...]
           [-o outfile] [@file] infile...

       Only the most useful options are listed here; see below for the remainder.  g++ accepts
       mostly the same options as gcc.

gcc 源码

源文件相关指令

  1. 预处理生成预编译文件(.i)gcc -E source.c -o source.i
  2. 编译生成汇编代码(.a)gcc -S source.c -o source.s
  3. 生成目标文件(.o)gcc -c source.c -o source.o
  4. 指定目标输出文件:-o选项
  5. 搜索头文件路径:-I
  6. 包含调试信息:-g

库函数相关指令

  1. 静态编译 gcc -static hello.c -o hello
  2. 动态编译 -shared(默认情况下)
  3. 添加搜索路径 -L
  4. 生成使用相对位置无关的目标代码-fPIC(position independance code)
  5. 编译静态链接库
    1. 生成目标文件.o
    2. ar -crv [.a] [,o]
  6. 调用静态链接库gcc -o[file] [file.c] -L 搜索路径(.a)
  7. 编译动态链接库
    1. 生成位置无关的目标代码 gcc -fPIC -c [.c]
    2. gcc -shared [.o] -o [.so]
  8. 调用动态链接库
    1. 隐式调用:gcc [file.c] -o [file] -L 搜索路径[file.so]
    2. 显示调用:在源程序中使用extern关键字

警告

  1. 关闭所有警告-w
  2. 发出gcc提供的所有有用的警告:-Wall
  3. 发出ansi.c的所有警告-penantic

头文件默认包含路径

  1. 命令whereis stdio.h
  2. 路径/usr/include/stdio.hrm -r

动态库包含路径

  1. 动态库包含路径

/usr/lib

  1. 动态库包含配置文件

/etc/ld.so.conf.d/libc.conf

gcc类库的依赖关系

在这里插入图片描述

gcc的编译

  1. 下载相关压缩包
  2. tar -xvjf gcc-4.7.1.tar.bz2 解压gcc
  3. 解压gmp mpc mpfr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值