一、GCC编译器
1.1 什么是GCC
GNU编译器套件(GNU Compiler Collection)
GNU:是GNU is Not Unix的递归缩写,即类Unix操作系统
Linux:Linux Is Not UniX
PNG:PNG’s Not GIF
RPM:RPM Package Manager
检验GCC:gcc --version 查看GCC版本
CentOS 安装:yum install gcc 默认已安装
Ubuntu 安装:apt-get install gcc 默认已安装
1.2 GCC编译过程及参数说明
参数说明
1.3例子
1.4 查看命令
uname -a 看系统
file hello32.out 看程序
file hello64.out
1.5 常用问题
/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录
解决方法:
yum install glibc-devel
二、多文件编译
H + C 一个头文件,一个源文件
H+ C + C 一个头文件,两个源文件
(N)H + C 多个头文件,一个源文件
(N)H + (N)C 多个头文件,多个源文件
2.1 H + C
2.1 H + C + C
2.3 (N)H + C
参照一个头文件,一个源文件
2.4 (N)H + (N)C
参照一个头文件,两个源文件
三、GDB调试工具
3.1 查看帮助
GDB:GNU DeBuger
man gdb 查看帮助手册
3.2 常用命令
在目标文件加入源代码 gcc -g xxx.c -o xxx
gdb xxx 开始调试
(gdb) list 或者 l 列出所有代码
(gdb) run 或者 r 运行程序
(gdb) start 开始调试
(gdb) quit 或者 q 退出调试
(gdb) next 或者 n 运行下一行,仅在当前函数
(gdb) step 或者 s 运行下一行,可进入函数
(gdb) print 或者 p 变量名 打印变量当前值
(gdb) set var i=3 局部变量设置
(gdb) info 或者 i 查看信息 locals 查看当前变量
(gdb) break 或者 b 设置断点,接行号或函数
(gdb) continue 或者 c 继续运行,直到下一个断点
(gdb) delete或者d 删除断点
(gdb) info 或者i breakpoints 列出断点
四、静态链接库
4.1 介绍
静态链接库在windows和linux系统中均存在相同概念
静态链接库以二进制文件形式存在,可链接为可行执行文件
静态链接库提供变量及函数,以提供功能函数为主要目的
windows的静态链接库为.lib文件,linux的静态链接库为.a文件
静态链接库之间及与可执行文件间无依赖关系
4.2 生成方式
gcc -c xxx.c -o xxx.o
生成方式一:ar rs libxxx.a xxx.o
生成方式二:ar r libxxx.a xxx.o ranlib libxxx.a
使用方法:gcc main.c -L. -lxxx -o main
五、动态链接库
5.1 介绍
动态链接库在windows和linux系统中均存在相同概念
动态链接库以二进制文件形式存在,可动态被可执行文件加载
动态链接库提供变量及函数,以提供功能函数为主要目的
windows的动态链接库为.dll文件,linux的动态链接库为.so文件
动态链接库之间及与可执行文件间存在依赖关系
5.2 生成方式
gcc -fPIC -c xxx.c -o xxx.o
生成方式:gcc -shared xxx.o -o xxx.so
使用方法:gcc main.c -L. -lxxx -o main