Linux下的C编程调试
1.vim编辑源代码文件
1.1创建并编辑main函数
vi main.c
#include "mytool1.h"
int main(int argc,char **argv)
{
mytool1_print("hello");
}
1.2创建并编辑mytool1.h
vi mytool1.h
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H
void mytool1_print(char *print_str);
#endif
1.3创建并编辑mytool1.c
#include "mytool1.h"
void mytool1_print(char *print_str)
{
printf("This is mytool1 print %s ",print_str);
}
2.分别查看用下面指令编译的结果
2.1 -E选项,预处理C源文件
gcc -E main.c -o main.i
-E意思就是prEprocess。输出不是送到一个文件而是标准输出。
2.2 -S选项,产生汇编源文件
gcc -S main.i -o main.s
-S意思就是aSsemble,产生一个叫main.s的汇编源文件
2.3 -c选项,只编译,不汇编连接
gcc -C main.s -o main.o
-c意思就是Compile,产生一个叫main.o的目标文件
2.4 -o选项,指定输出文件名
gcc main.s -o main
-o意思是Output即需要指定输出的可执行文件的名称。这里的名称为main。
3.gcc过程改为makefile管理
当然由于这个程序很短,我们可以这样来编译:
gcc -c main.c
gcc -c mytool1.c
gcc -o main main.o mytool1.o
这样的话我们也可以产生main程序,而且也不是很麻烦。但是如果我们考虑一下如果有一天我们修改了其中的一个文件(比如说mytool1.c)那么我们难道还要重新输入上面的命令?也许你会说,这个很容易解决啊,我写一个 SHELL脚本,让它帮我去完成不就可以了。是的对于这个程序来说,是可以起到作用的。但是当我们把事情想的更复杂一点,如果我们的程序有几百个源程序的时候,难道也要编译器重新一个一个的去编译?
为此,聪明的程序员们想出了一个很好的工具来做这件事情,这就是make。我们只要执行以下make,就可以把上面的问题解决掉。在我们执行make之前,我们要先编写一个非常重要的文件。–Makefile。对于上面的那