GCC程序编译过程; E6 W7 U) o, u$ S) k: W
- {3 }+ I3 f( H9 @ B" ~
GCC常用后缀名
9 d# ?! S! f; e b; E; F- x
' Z3 Y/ t [9 ~$ f3 x2 Q
7 f1 P F* f0 Q; H/ v! uGCC使用方法
4 ]7 l5 |& E* c2 R最基础也是最高端的方法 Linux环境下man gcc 命令查看帮助信息 # 在这里列举man的使用方法
% N5 Z. m) V1 B回车 下一行
$ }( K: F/ R) m/ g3 t# ]9 Ipage up 上一行/ W( ?# m( V9 _% c' L# H
page down 下一行
9 x+ ~3 V# a+ x( | O0 Ahome[方向键左]第一页7 b% a+ J, y6 \, J; D& U% `* }+ Z
end[方向键右] 最后一页
) d& ?, {5 }) y: r空格 下一页
, O; b" x* ] T- J$ V% N4 Lb 上一页3 I" N; v$ Z$ w2 M( o Q
q 退出
& d+ A4 R8 K. C$ y, h; y/string 从上往下搜索字符串string+ O# ?+ r: z/ k% T
?string 从下往上搜索字符串string
' k1 n+ t/ n! R9 _% K2 Zn 下一个搜索匹配项
- s* o8 O4 D. p$ @$ l+ }* f: bN 上一个搜索匹配项
+ V3 S- J& v% A, D
# n# f% D9 s \; R2 J命令使用
" @1 j2 o( h2 m& l
5 @# S% q" z) r7 x手册" z$ D& K4 |' L) s% M" y' q8 W
GCC参数汇总4 Q j( x8 n- D0 I8 q: u0 }% Y
0 T8 \* R; I' z# AGCC常用参数
0 \& E! _1 Q' a) }! A+ H: N
6 H. y5 U" A4 R$ L" G4 V
编译过程参数 w. D) _4 T( v" ^' A6 P1 \
参数 | 作用 | -c | 只编译不链接,生成目标文件 .o | -S | 只编译不汇编,生成汇编代码 | -E | 只预编译 | -g | 包含调试信息 | -o 文件名 | 指定输出目标文件 | -I 路径名 | 搜索头文件路径 | 库选项参数linux下静态链接库和动态链接库格式 # 静态链接库
9 H" b [* J7 C1 |5 {.a [libname.a]- |. W6 A% q5 h( a5 D
# 动态链接库7 o" v6 s" f0 t; r, S \
.so [libname.so[主版本号.次版本号.发行号]]
5 {1 v. b. A& ^9 w5 p9 K例如 libgupnp-dlna-gst-2.0.so.3.0.0! @% ~% A2 I9 }+ ]' V
在Linux系统中: 头文件存放路径一般为/usr/include 库文件存放路径一般为/usr/lib 参数 | 作用 | -static | 静态编译 | -shared | 生成动态库文件 进行的动态编译 | -L 路径名 | 库文件搜索中添加路径 | -fPIC | 生成使用相对位置无关码的目标代码 |
默认情况下的编译为动态链接 编译静态链接库- 先生成目标文件 .o
- ar crv [*.a] [*.o]
- 调用静态链接库 gcc -o [file.c] -L [file.a]6 t3 C, L: S" m: l- I+ |; g# M
编译动态链接库- 生成位置无关目标代码 gcc -fPIC -c [file.c]
- 生成动态链接库 gcc -shared -o [*.so] [*.o]
- 调用动态链接库 gcc -o [file] -L [file.so]
- 为了使程序运行时加载动态链接库,将动态库拷贝到/usr/lib目录下% S5 t5 Q( W$ M9 i0 o
警告选项参数 | 作用 | -w | 关闭所有警告 | -Wall | 发出gcc提供的所有有用警告 | - pedantic | 发出ansic的所有警告 | 优化选项参数 | 作用 | -O 优化等级 | 优化等级,一般只是最终发布的时候才用 |
) v) S. W: V& H |