c++基础gcc和gdb朝花夕拾

二进制文件.o

以点o文件为结尾的文件为二进制文件  目标文件

gcc –o hello_world hello_world.c  会将目标文件会被删除,直接生成可执行文件

那么什么时候需要目标文件呢?制作库文件的时候

通过链接器将目标文件链接可以生成可执行文件,

gcc

gcc是 gnu cc的简称,gcc能编译c,c++,object C等语言

gcc 【option】【filenames】

-c 只是编译,生成目标文件

-S 只是编译不汇编,生成汇编代码

-E 只进行预编译,不做其他处理

-g 再可执行程序中包含标准调试信息

-o file 指定输出文件

-v 版本

-std=name 指定c语言的标准  c90 c89 c00等

-l dir 在头文件的搜索路径列表中添加dir目录

example:

为了工程化,一个工程下一般具有src bin obj include :源文件 可执行文件  目标文件 头文件

gcc –o bin/helloworld src/helloworld.c 

gcc –o obj/helloword.o –c src/helloworld.c

gcc –o bin/helloworld obj/helloworld.o

gcc -std=c99 –o bin/helloworld src/helloworld.c //指定c语言标准

优化选项:

-O 减少代码的长度和执行时间,效果等价于-O1,其中包括线程的跳转和延迟退栈

-O2:除完成所有-O1级别的优化之外,还要进行一些额外的调整工作,比如处理器指令的调度。

-O3: 除完成所有以上工作外,还包括循环展开和其他一些与处理器特性相关的优化工作

数字越大优化等级越高,一般用第二个,它在优化长度、编译时间和代码大小之间取得了一个比较理想的平衡点。

linux查看运行时间 time 【filename】

gcc –O –o bin/optimize src/optimize.c

警告和出错选项:

-ansi:支持符合ANSI 标准的c程序

-pendantic 允许发出ansi c标准所列的全部警告信息

-pendantic-error:允许发出 ANSI C 标准所列的全部错误信息

-w 关闭所以警告

-Wall:允许发出gcc所提供的所有有用的警报信息(跨平台可能出现的问题)

制作库文件选项:

-L dir:在库文件的搜索路径列表中添加dir目录

-static:链接静态库

-lname:链接名为name 的库文件

-shared:表明是共享库

gdb

gdb调试器:基于Unix和Linux的程序调试工具,没有图形化的友好界面,与微软VC等工具所媲美

gdb的作用:

  1. 可以按照用户的要求随意运行程序
  2. 可以让被调试的程序在用户所设定的断点处停住
  3. 可以检查此时用户程序中所发生的事,当程序被停住时
  4. 可动态改变用户程序的执行环境

gdb的使用;

gcc –g 【其他选项】 【文件名】

gdb调试的是可执行程序而不是源代码,对源文件进行编译一定要加上选项-g才包含调试信息

gdb 可执行文件

l(list)":查看所载入的文件

b(break):设置断点,程序运行到断点停止,后面可以跟上行号或者函数的名字

info b:查看设置的断点的情况

r(run):从第一行开始运行代码,或从指定行开始,可在r后面加上行号

p n:查看变量n的值

n(next):单步运行下一行代码(遇到函数不会进入函数)
s(strp):单步运行下一行代码(遇到函数会进入函数)

c(continue):恢复程序的运行,执行剩余的程序

posted @ 2020-05-08 15:51  淇实是我  阅读(198)  评论(0编辑  收藏  举报