用C语言实现Linux命令——模拟gcc

Posted 猫咪蠢蠢

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言实现Linux命令——模拟gcc相关的知识,希望对你有一定的参考价值。

我们在使用Linux C编程的时候,编译一个文件,比如hello.c,会使用gcc命令,通常的格式是gcc -o hello hello.c,将hello.c文件编译为可执行文件hello,如果想用C语言写一个程序来实现gcc的话,要用到两部分主要的内容:命令行参数的处理和在C语言中执行终端命令。

先说C语言中命令行参数的传入,需要借助argv数组,大家应该看到过这样形式的代码:

argc是整型,记录命令行参数的个数,char **argv是个二维字符数组,记录传入的参数,有时也写作char *argv[],两者是等价的,后者表示这是一个字符串数组。

如果我们希望生成一个mygcc程序,编译时我们需要运行./mygcc  filename.c,argv要接收两个参数,我们在程序中需要用到string.h库中处理字符串的函数。

再来说C语言中终端命令的使用,我们需要借助system()函数,别忘了要用到stdlib.h库。

接下来我们就可以尝试写一个mygcc程序了:

用C语言实现Linux命令——模拟gcc

这里我们将传入的filename.c文件编译为名为filename的可执行文件,我们还用到了字符串复制函数strcpy()、字符串分割函数strtok()和字符串连接函数strcat()。

我们尝试编译一个经典的"hello world"文件。

我们将mygcc.c编译为mygcc后就可以直接用它来编译别的文件了。


以上是关于用C语言实现Linux命令——模拟gcc的主要内容,如果未能解决你的问题,请参考以下文章

C语言 用定时器 模拟多线程

用C语言模拟实现密码输入

用C语言实现linux下文件模糊查找,比如在home下,找出所有的JPEG文件

用C语言实现文件拷贝

请教一个Linux下C语言的进程间的信号问题

请求分页管理模拟实现的C语言源代码