c语言sscanf函数的用法是什么
290
2022-11-23
OS之实验一 gcc和gdb的使用
实验目的 1.掌握Linux操作系统下最常用的c语言编译器gcc的使用 2.掌握Linux操作系统下最常用的代码调试器gdb的使用; 3.掌握调试代码的基本方法,如观察变量、设置断点等。
gcc 的使用格式: gcc [options][filenames]
其中 filenames 为所要编译的程序源文件。 options 见下文 gcc 的主要参数。
当使用 gcc 时, gcc 会完成预处理、编译、汇编和连接。前三步分别生成目标文件,连接时,把生成的目标文件链接成可执行文件。 gcc 可以针对支持不同的源程序文件进行不同处理,文件格式以文件的后缀来识别。
vi hello.c
一、常见步骤:
对于只有一个源文件的简单程序,常常只有编译,运行两步。
1 , gcc hello.c -o hello
2 , ./hello
二、 gcc 编译流程
gcc and g++ 分别是 gnu 的 c & c++ 编译器 gcc/g++ 在执行编译工作的时候,总共需要 4 步
hello.c ( 源码 )
1 , hello.i 生成预处理文件,
参数是“ -E ”,把 hello.c -> hello.i 。完整命令为 gcc hello.c -o hello.i -E
2 , hello.s 编译生成汇编文件,
参数是“ -S ”,把 hello.i -> hello.s 。完整命令为 gcc hello.i -o hello.s -S
3 , hello.o 将汇编文件变为目标代码,
参数是“ -c ”,把 hello.s -> hello.o 。完整命令为 gcc hello.s -o hello.o -c
4 , hello 链接目标代码,生成可执行程序,
参数无, 把 hello.o -> hello 。 完整命令为 gcc hello.o -o hello
./hello ( 运行 )
三、 gcc 的主要参数
1 ,总体参数
-E 只进行预编译,不做其他处理
-S 只是编译不汇编,生成汇编代码
-c 只是编译不链接,生成目标文件“ .o ”
-o file 把输出文件输出到 file 里
-g 在可执行程序中包含标准调试信息
-v 打印出编译器内部编译各过程的命令行信息和编译器的版本
-I dir 在头文件的搜索路径列表中添加 dir 目录
-L dir 在库文件的搜索路径列表中添加 dir 目录
-static 链接静态库
-llibrary 连接名为 library 的库文件
2 ,警告和出错参数。
-w 关闭警告
-ansi 显示不符合 ANSI C 标准语法的警告信息
-pedantic
-Wall 跟踪调试的有力工具,最后养成使用此参数的习惯。
3 ,查找选项
gcc 一般使用默认路径查找头文件和库文件。如果文件所用的头文件或库文件不在缺省目录下,则编译时要指定它们的查找路径。
-I 选项:指定头文件的搜索目录
例: gcc –I/export/home/st –o test1 test1.c
-L 选项:指定库文件的搜索目录
例: gcc –L/usr/X11/R6/lib –o test1 test1.c
4 ,优化参数。
通过参数“ -On ”来生成优化代码。其中 n 是一个代表优化级别的整数,较典型范围是从 0 到 2 或 3. 数字越大优化的等级越高,程序运行速度越快。常用 -O2 ,因为它在优化长度,编译时间和代码大学之间取得一个比较理想的平衡点。比较: 1-8.c( 代码略 )
gcc 1-8.c -o 1-8
time ./1-8
gcc 1-8.c -o 1-8 -O2
time ./1-8
注:如下场合应避免优化代码。
(1) 程序开发时。只有到软件发行或开发结束时,才考虑对最终生成的代码进行优化。
(2) 资源受限时。如内存资源非常紧张时(一些实时嵌入式设备)。
(3) 跟踪调试时。优化可能会删除、改写或重组代码,从而使跟踪调试变得异常困难。
gdb 调试器 gdb 使用格式: gdb filename
其中, filename 是要调试的可执行文件。用这种方式运行 gdb 可以直接指定想要调试的程序。这和启动 gdb 后执行 file filename ( file 命令:装入想要调试的可执行文件)命令效果完全一样。也可以用 gdb 去检查一个因程序异常终止而产生的 core 文件,或者与一个正在运行的程序相连。
gdb 支持很多的命令且能实现不同的功能,这些命令从简单的文件装入到允许你检查所调用的堆栈内容的复杂命令。
1 ,编辑源文件。
例如, vi 1-9.c 添加如下内容
#include
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~