C++笔记--Linux编程-gcc gbb make
Posted xiangjai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++笔记--Linux编程-gcc gbb make相关的知识,希望对你有一定的参考价值。
gcc
使用gcc,程序员可以对编译过程有更多的控制,编译过程分为3个阶段。
-预处理
-汇编
-链接
程序员可以再编译的任何阶段结束后停止整个编译过程以检查编译器在该阶段输出的信息
示例
#include <stdio.h>
int main(int arg, char *args[])
{
if (arg < 3)
printf("请输入2个参数\\n");
else
{
int a = atoi(args[1]);
int b = atoi(args[2]);
printf("%d 加 %d 等于 %d\\n", a, b, a + b);
}
return 0;
}
在命令行键入命令编译和运行这段程序
$gcc -o hello hello.c
这行命令告诉gcc对源程序hello.c进行编译和链接,并使用参数-o指定创建名为hello的可执行程序。
整个过程看上去仿佛是一气呵成的,但其实是编译过程分几步的
编译过程
-预编译源代码;
-编译目标代码;
-链接程序
预编译
$gcc -o hello1.c -E hello.c
这行命令告诉gcc对源程序hello.c进行预编译,预编译结果输出到hello1.c文件中
编译
$gcc -o hello.o -c hello1.c
这行命令告诉gcc对源程序hello.c进行编译,但不链接,编译输出到hello.o文件中
链接
$gcc -o hello hello.o
这行命令告诉gcc对源程序hello.o进行链接,生成可执行程序hello
gcc常用选项
make
makefile是一个文本形式的脚本文件,其中包含一些规则告诉make编译哪些文件,怎么样编译以及在什么条件下编译。
makefile规则遵循以下通用形式
target:dependency [dependency[…]]
command
command
[…]
每个command第一个字符必须是tab键,而不是空格键,不然make会报错并停止
makefile示例
start:hello.o
gcc -o hello hello.o
hello.o:
gcc -o hello.o -c hello.c
clean:
rm -f hello.o
说明
target start后面的hello.o代表其下的command依赖与hello.o这个target。所以make先执行了hello.o这个target下的command
输入make clean,make会直接执行clean其下的command
makefile变量
varname=some_text
把变量用括号括起来,前面加$就可以引用该变量的值。 $(varname)
示例
CC=gcc
start:hello.o
$(CC) -o hello hello.o
@echo '---------------ok---------------'
hello.o:
$(CC) -o hello.o -c hello.c
clean:
rm -f hello.o
gdb
启动gdb gdb 程序名 [corefile]
corefile是可选的,但能增强gdb的调试能力。
Linux默认是不生成corefile的,所以需要在.bashrc文件中添加
ulimit -c unlimited (修改完.bashrc文件后记得 . .bashrc 让修改生效)
gdb最有用的功能之一就是它可以显示被调试程序中任何表达式、变量的值
以上是关于C++笔记--Linux编程-gcc gbb make的主要内容,如果未能解决你的问题,请参考以下文章