美文网首页0基础自学linux
0基础自学linux运维-5.8-linux C编译基础

0基础自学linux运维-5.8-linux C编译基础

作者: hualinux | 来源:发表于2019-07-08 11:16 被阅读3次

一、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

相关文章

网友评论

    本文标题:0基础自学linux运维-5.8-linux C编译基础

    本文链接:https://www.haomeiwen.com/subject/wpznhctx.html