编译与调试以及makefile

来源:互联网 发布:excel雷达图怎么筛数据 编辑:程序博客网 时间:2024/04/29 13:09

编译链接

总的来说,g++会直接执行编译链接操作,如果有了-c 则会不执行链接操作,只执行编译操作,而有了-o 才能控制可执行文件的名字

所以说,如果直接执行 g++ test.cpp 会产生一个默认名字为a.out 的可执行文件

g++ -o test test.cpp (生成可执行文件test,要执行编译链接过程)

./test  (执行该可执行文件)

-o后面要紧跟可执行文件的名字例如 g++ -g test.cpp -o test

g++ -o test test.cpp -Wall (加入-Wall后程序的编译会严谨一点,警告讯息也会显示出来!)

g++ -c test.cpp (生成.o的obj文件,只编译不链接)

g++ -o test test.o (生成可执行文件)

g++ -g -o test test.cpp (-g 编译时产生相应的调试信息)

调试

然后输入 gdb test 即可进入调试界面

下面介绍查看变量值的一个调试过程:

首先需要设置断点,比如 break 45

45 代表第45行,所以可能需要先用 list 命令显示源代码

然后要运行整个程序,使用 run 命令

接着 输出某个变量的值例如 print a

kill 可以结束当前程序的调试

quit 可以退出gdb

makefile

首先需要新建一个文档,可以取名为makefile

然后关于makefile的格式问题

test:test.o        g++ -o test test.otest.o:test.cpp        g++ -g -c test.cppclean:        rm -f test test.o
注意第二行前面使用Tab键空出一段,可以看出这里就是描绘了由.cpp到.o文件的过程,然后由

.o文件到可执行文件.out的过程,由于调试信息是在编译时加入,所以在由.cpp到.o文件的过程

中加入-g。另外rm 操作中 -f的含义是即使原档案属性设为唯读,亦直接删除,无需逐一确认。

使用malefile时,只需在命令行窗口输入,make test 即可执行编译,链接过程,然后可以通过

./test 来执行可执行文件,同时可以通过 make clean来删除.o 文件,执行语句为 make clean。



0 0
原创粉丝点击