Ubuntu下GCC的使用
gcc的基本使用:(以hello.c为例子)
gcc [options] [filenames]
-
gcc hello.c -o hello
用于确定可执行文件的名称为output_filename,如果不给出这个选项,gcc就会默认给出预设的可执行文件a.out。
-
gcc -o hello.c
只是编译,不会链接成可执行文件,只是由.c文件生成.o的目标文件。
-
gcc -g hello.c /*output:a.out*/ gcc -g hello.c -o hello /*output:hello*/
产生调试工具所必需的符号信息,要调试,就必须加上这个选项
-
-O -O2 gcc test.c -o test_o /*这是没有优化时的执行文件*/ gcc -O test.c -o test_O /*这是优化时的执行文件*/ 测试的时候用指令:time ./可执行文件名
对程序进行优化,这样产生的可执行文件执行效率可以提高。
-
-I{dirname} gcc -I/opt/workspace/class/hello hello.c -o hello
增加查询头文件位置,将所指示的目录下查询包含文件。gcc默认的查询头文件在/usr/include/下查找。
-
-L{dirname}
将dirname所指向的目录加入带库文件的玛瑙路列表中,在默认情况下,名客人路径为/usr/lib/下查询需要的库文件,这个选项告诉程序先去-L的目录下寻找,然后再去系统路径下查询。
-
-static 静态链接库文件 gcc -static hello.c -o hello
动态链接需要依赖库,但是静态连接直接将库和程序一起打包了。静态连接一般都很大,慎用!
-
-Wall gcc -Wall hello.c /*会产生所有的警告信息*/ 相反的,不产生警告信息的是:-w
-
-DMACRO gcc -DYES hello.c -o hello
Ubuntu下GDB调试工具的使用
-
启动GDB
gdb {可执行文件名}
-
打断点
{break/b} {函数名字、行号、文件名:行号、行号 if条件}
-
查看程序
list、l
-
查看所有设置的断点
info break
-
删除断点
delete 断点标号
-
开始运行程序
run、r
-
执行下一步
next、n
-
单步运行程序
step、s
-
继续运行程序
continue、c
-
查看指定变量值
print、p {变量名}
-
运行程序,直到当前程序结束
finishi
-
对指定变量进行监控
watch 变量名
-
退出gdb
quit、q
Makefile工程管理及make工具的使用
-
makefile的规则
target : 依赖对象
<table>命令
实例:## hello world makefile ###
hello:hello.c gcc hello.c -o hello
指定makefile的文件
make -f {makefile的文件名字} make -f Makefile_hello <*v*>[makefile==改名字==>Makefile_hello] mv makefile Makefile_hello
-
伪目标
-
变量
obj=main.o func1.o func2.o func3.o hello:$(obj) gcc $(obj) -o hello 变量的方式可以方便后期对依赖关系的修改,默认变量 $^ 代表都有的依赖文件 $@ 代表目标 $< 代表第一个依赖文件 makefile可以改写成: hello:main.o func1.o func2.o gcc $^ -o $@
-
其他的内容
-
注释: ##后面的内容视为注释内容
-
@{命令行}:取消回显
@gcc …………………………
-