hualinux c 1.2:linux C编译基础

本文详细介绍了GCC编译器的功能与使用方法,包括编译过程、参数说明及常见问题解决方案。同时,深入探讨了多文件编译、GDB调试工具的使用,以及静态链接库和动态链接库的生成与使用方式。

目录

 

一、GCC编译器

1.1 什么是GCC

1.2 GCC编译过程及参数说明

1.3例子

1.4 查看命令

 1.5 常用问题

二、多文件编译

2.1 H + C

2.1 H + C + C

2.3 (N)H + C

2.4 (N)H + (N)C

三、GDB调试工具

3.1 查看帮助

3.2 常用命令

四、静态链接库

4.1 介绍

4.2 生成方式

五、动态链接库

5.1 介绍

5.2 生成方式


一、GCC编译器

1.1 什么是GCC

GNU编译器套件(GNU Compiler Collection)

GNU:是GNU is Not Unix的递归缩写,即类Unix操作系统

Linux:Linux INot 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编译过程及参数说明

第一个用命令表示就是

gcc -E hello.c -o hello.i
gcc -S hello.i -o hello.s
gcc -c hello.s -o hello.o
gcc hello.o -o hello
#运行
./hello 

这些后缀说明:

.c:就是c文件(c file)
.i 预处理 C 源代码后产生的中间文件(Intermediate file)
.s 汇编代码文件(Assembly file)
.o:目标文件(Object file)

.file.cc, file.cp, file.cxx, file.cpp, file.CPP, file.c++, file.C: 没有预处理过的 C++ 源代码文件

参数说明

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

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值