gcc语法:
gcc [options] [filename]
简单的选项说明:
/*-o 用来指定输出的可执行文件的文件名,如果不指定则默认为a.out*/
gcc hello.c -o hello
/* -c 只编译不连接成可执行文件 */
会生成 *.o 的形式的文件,即编译出来的,但没有连接
/* -g 产生调试所必须的符号信息 */
/* -O -O2 对程序进行优化 */
-I 指定搜索头文件的目录
gcc -I /home/lession/ -o hello hello.c
-Ldirname 将dirname所指目录加入到库文件的目录列表中
系统预设的库在 /usr/lib 中
-l 指定要链接的某一个库 如链接libm.a这个库
gcc -lm filename
动态链接和静态链接的区别:
静态链接成的文件中有库的拷贝,文件较大
动态链接不拷贝库,多个执行文件共享库,文件较小
gcc默认是采用动态链接方式
gcc -static -o hello hello.c 这样gcc就会进行静态链接
-Wall 生成所有警告信息
-w 不生成任何警告信息
-DMACRO 定义MACRO宏,等效于在程序中使用#define MACRO
===========================================================
gcc 调试
===========================================================
GDB 调试器
gcc -d *要加上
gdb test //test为被调试文件的名字
break(b) 设置断点
next 下一步
continue 执行直到文件尾
gdb的命令:
list 列出正在调试的程序
break 文件名或行号
break 文件名:行号
break if i=10 23 //在23行打断点,只有当i==10时才停下来
info break 用来查看程序中所有的断点
然后用 delete 断点号 来删除断点
run(r) 运行程序
print p 查看变量值
next(n) 单步运行 不会进入函数内部
step(s) 单步运行 进入函数内部
watch 监控变量 ,当变量有变化时程序就停止
finish 运行程序直到程序结束
对上面进行总结:
打断点 break
运行 run
continue
finish
单步 next
进入函数内部的单步 step