23>>gcc-gdb-makefile

man gcc is pretty good.

gcc:

-E:  只进行预处理

-S:  预处理和编译

-c:  预处理,编译和汇编

-g:  将gdb调试信息添加到可执行文件中

-save-temps:  保存中间文件

-Idirectory:  在包含文件搜索路径的起点处添加指定目录

-Ldirectory:  增加库文件的搜索路径

-library:   提示链接程序在创建最终可执行文件时包含指定的库

-O,-O2,-O3:  将优化状态打开,不能和-g参数一起使用

-Wall:    启动所有警报

-w:    禁止所有警报

-Werror-Wall:    在发生警报时取消编译操作

-Dmacro:    使用指定的宏,使他通过源码中的#ifdef进行校验

-v:    gcc版本信息

gdb:

gdb program <core>/<PID>

break 16:      设置断点

break func:      在函数处设置断点

bt:        查看函数堆栈

r:        运行程序

l 1:        从第一行列出程序

s:        单步执行程序

c:      继续程序,直到新的断点

p result:      打印出当前的sum值

n:

finish:      退出子程序

q:        退出调试

makefile:

内置宏:

$<:      第一个依赖文件名称

$+:      所有依赖文件,可能重复

$^:      所有不重复的依赖文件

$?:      所有时间戳比目标文件晚的依赖文件

$*:       不包含扩展名的目标文件

[email protected]:      目标文件的完整名称

隐藏规则:

proc.o:proc.c code.h  ==> proc.o:proc.c code.h \n   gcc -c proc.c -o proc.o

时间: 2024-11-07 07:17:40

23>>gcc-gdb-makefile的相关文章

gcc gdb makefile学习笔记

一.gcc (GNU C compiler )1.预处理  gcc -E aaa.c  -o aaa.i   →  .i(c代码)    ↓ 2. 编译   gcc -S aaa.i  -o aaa.s   →   .s(汇编代码)    ↓3. 汇编   gcc -c  aaa.s  -o aaa.o  →   .o(目标代码-二进制)    ↓4. 链接   gcc aaa.o    -o aaa    →   aaa(可执行文件) 优化编译链接   gcc -O(O2/O3) aaa.o

GCC,GDB,Makefile和IO复用函数

2015.1.22 c高级的环境搭建:GCC编译器:全称 GUN CC,是GNU工具(tool chain)的一种,源码编译成机器码,gcc的编译依赖于很多小工具4.3.3和3.4.3版本的比较稳定 GCC编译分为四个步骤:(用WC命令可以分别查看每个阶段代码的大小,可以比较一下,ls -l 也能看出大小) 1.预处理 ->cpp预处理文件*.i gcc -E2.编译 ->cc1汇编文件*.s gcc -S3.汇编 ->as汇编文件*.o gcc -c4.链接 ->ld可执行文件*

实例学习gcc+gdb+make

1 小侃GCC 在正式使用gcc之前,我们先来侃侃gcc是啥玩意儿? 历史 现在的GCC是GNU Compiler Collection的简称,既然是Collection,就是指一些工具链的集合. 最初的GCC(当时还只有C编译器,GCC还是GNU C Comiler的简写)是由Richard Stallman开发的,Stallman也是GNU工程的首创者,那时还是在1984年. 随着程序设计语言的发展,GCC逐渐开始支持C语言之外的语言,如C++.Objective-C.Java.Fortra

学习的例子gcc+gdb+make

1 小侃GCC 在正式使用gcc之前,我们先来侃侃gcc是啥玩意儿? 历史 如今的GCC是GNU Compiler Collection的简称.既然是Collection,就是指一些工具链的集合. 最初的GCC(当时还仅仅有C编译器,GCC还是GNU C Comiler的简写)是由Richard Stallman开发的,Stallman也是GNUproject的首创者.那时还是在1984年. 随着程序设计语言的发展,GCC逐渐開始支持C语言之外的语言,如C++.Objective-C.Java.

GCC、Makefile编程学习

相关学习资料 http://gcc.gnu.org/ https://gcc.gnu.org/onlinedocs/ http://zh.wikipedia.org/zh/GCC http://blog.csdn.net/casularm/article/details/316149 http://www.bccn.net/Article/kfyy/cyy/jc/200409/9.html http://linux.chinaunix.net/techdoc/develop/2008/12/16

GCC&amp;&amp;GDB在OI中的介绍

序言 这本来是用Word写的,但是后来我换了系统所以只能用markdown迁移然后写了...... $\qquad$本文主要投食给那些在Windows下活了很久然后考试时发现需要用命令行来操作时困惑万分以及觉得GDB很好吃的人 $\qquad$以及---- $\qquad$经常眼瞎看不见i++和j++的区别 $\qquad$经常访问a[-1]然而使编译器无可奈何(除非在使用O2的情况下的明显访问越界)的人 ... $\qquad$正式地说,本文介绍GCC&&GDB命令在OI中的应用. 提要

常用的工具GCC GDB Make Makefile

系统调用系统调用是操作系统提供给外部应用程序的一组特殊的接口.应用程序通过这组特殊“接口”来获得操作系统内核提供的服务.在 C 语言中,操作系统的系统调用通常通过函数调用的形式完成, 这是因为这些函数封装了系统调用的细节,将系统调用的入口.参数以及返回值用 C 语言的函数调用过程实现. 应用编程接口API程序员并不是直接使用系统调用.程序员调用的是函数库中定义的应用编程接口API.也就是,通过应用编程接口,使用系统调用,请求内核服务.一个API可能对应几个系统调用.通过系统调用就可以请求内核服务

gcc gdb调试 (一)

用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.所谓“寸有所长,尺有所短”就是这个道理. 一般来说,GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序.    2.可让被调试的程序在你所指定的调置的断点处停住.(断点可以是

Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入)

一.确认已经装好了GCC和Make的软件包 可以使用whereis命令查看: 如果whereis  gcc和whereis  make命令有结果,说明安装了这两个软件,可以继续往下做. 二.使用GCC编译运行一个HelloWorld程序(只涉及单个文件) 可以在任何一个目录编写C程序然后编译运行,我这个实例在自己主目录进行: 然后就进入了编写程序的界面: 按下键盘”i”进入编辑界面,然后输入程序: 按ESC(进入命令行模式),然后输入”:wq”,冒号表示开始输入命令,字母w代表保存文件,字母q代

Mac OS 下的 gcc gdb

好久没有写c了,今天和老婆大人一起做了一下微软的网上编程题.发现忘了好多. 由于有运行时错误,所以想用gdb调试一下,发现没有gdb,遂使用homebrew安装,结果安装出错.后来发现错误的原因应该是找不到gcc!可是我一直用gcc编译程序的啊,好奇怪! 这两天vpn不稳定,只能百度,好不容易才发现了原因: 从Mac OS 10.9开始,安装Xcode5时不会再安装gcc了,而系统中的gcc实际上只是一个别名. $ gcc -v Configured with: --prefix=/Applic