linux命令都是c语音吗,通过几个简单的Linux命令,深入理解c语言编程?

276b4ce13c8d17812355e65b1e19850c.png

慕桂英546537

主要使用gcc命令以及以下几个参数:-E Preprocess only; do not compile, assemble or link-S Compile only; do not assemble or link-c Compile and assemble, but do not link-o Place the output into 环境配置好以后,让我们开始c语言的编译之旅吧~编写c语言源代码很多linux命令都可以新建一个文件,比如$ touch test.c建立一个空白的文件$ vim test.c使用vim(文本编辑器)编辑test.c,如果test.c不存在,则创建$ echo "123" > test.c通过输出重定向新建一个文件创建完test.c后,将下面这段Hello World代码写到test.c中(很多方法)#include int main(){printf("Hello world\n");return 0;}写完之后可以使用ls命令来查看当前目录下的文件,检查test.c是否存在$ ls使用cat命令查看test.c中的内容,检查是否写入成功$ cat test.cls-cat展开头文件(预处理)$ gcc -E test.c -o test_pre.c这个命令把源代码test.c中的头文件展开,并把结果输出到test_pre.c(可以使用cat或者vim命令查看test_pre.c文件中的内容)pertest_pre.c中的内容是这样的,可以发现原本几行的代码变成了几百行,而且已经见不到include关键字了,取而代之的是一些变量定义的代码,这些代码就是stdio.h中的内容,和stdio.h中头文件展开后的内容。编译$ gcc -S test_pre.c -o test_asm.s这一条命令将上一步预处理过后的源代码编译成为汇编代码asm现在看到的是test_asm.s里面的汇编代码。什么是汇编?汇编语言是汇编指令集、伪指令集和使用它们规则的统称,使用具有一定含义的符号为助忆符,用指令助忆符、符号地址等组成的符号指令称为汇编格式指令。简单的可以理解为汇编语言是一本词典,01100101011010这样的二进制字符串是单词,汇编指令是单词的含义。计算机能读懂二进制字符串,而人能读懂的是翻译过来的汇编指令。汇编$ gcc -c test_asm.s -o test_obj.o这一步将test_asm.s汇编成为目标文件,目标文件中存储的就是010101010这样的字符串了,可以用cat命令试试去读取test_obj.oobj可以发现打印出来许多不可见的字符,原因是目标文件已经是二进制格式的了,不同于源代码(文本格式)有关文件的格式可以看下这里的介绍:http://www.cnblogs.com/zhangjiankun/archive/2011/11/27/2265184.html链接链接器负责将程序的目标文件与所需的所有附加的目标文件连接起来,最终生成可执行文件。附加的目标文件包括静态连接库和动态连接库。这个例子中没有附加的目标文件,所以只需要目标文件做被链接的对象。有关链接器的详细讲解大家可以看下这里:https://www.zhihu.com/question/27386057$ gcc test_obj.o -o hellogcc本身可以充当链接器,这里使用gcc命令将目标文件test_obj.o链接成了可执行文件hellold运行程序!至此,源代码已经经历了预处理、编译、汇编、链接四步成为了可执行文件,现在试着运行一下这个程序吧$ ./hellohello小结  首先我们创建了源文件test.c,然后用gcc -E将源文件中的头文件展开,这一步叫做预处理;  之后通过gcc -S将预处理后的源文件编译了汇编代码,这一步叫做编译;  接着使用gcc -c命令将汇编代码转换成了二进制的目标文件,这一步操作叫做汇编;  目标文件不同于源代码,是二进制格式,是源文件编译过程中产生的中间文件,通过链接器可以将多个目标文件链接成为可执行文件,这一步叫做链接。源文件->(预处理->编译->汇编->链接)->可执行文件  一般大家所说的c语言编译,其实是上述这四步的简称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值