我也要学C语言!第一个C程序的编译初解!
今天有个刚刚接触编程的小伙伴跟我分享了他写的第一个程序!这让我想起了我以前用VC写的第一个C语言程序:
以前在VC成功的运行了第一个C程序,现在依旧能感觉到兴奋.关于编译,链接等步骤,VC6.0已经傻瓜化的帮我做了,我感觉到确实很方便,但是这样才给我带来了1个问题,就是其中的步骤只是看了书有所了解,自己呢,没有实践过,所以感觉还不是自己的东西。所以我决定自己用记事本写个程序,但是自己动手实现编译,链接等VC帮我做了的事情。
首先,我用记事本写上那个helloworld程序。
#include<stdio.h>
int main(void)
{
printf(
"Hello,World!\r\n");
return (0);
}
然后把此文件后缀命名为.c的hello.c文件。
然后在CMD中,用CL hello.c 这时,CL编译器就会生成2个文件。1个是hello.exe文件,1个是hello.obj文件。.exe文件我知道是WINDOWS平台的可执行文件,可是这个.obj是个什么文件啊,我不懂,我查阅下了资料。原来.obj文件是通用的COFF的格式,是个目标文件,可以和其他平台交互.但是怎么一下子出现了2个文件啊!原来直接用CL命令,编译器给自动链接了。这里要加1个参数/c。这样编译器就不会自动链接了。嗯!加了参数/c后果然只有1个.obj文件了!!!现在没有了.exe要怎么才能生成.exe文件呢,这里就要用到另外1个命令工具了,link.这个工具就是链接器!然后我这样做:link hello.obj。这样做了link就为win平台造了个pe格式的hello.exe.嘿嘿!这下子就可以在WIN平台运行hello程序了!!!
之前有个网友提醒我,#include<stdio.h>是将stdio.h这个文件在此处原样展开。于是我深入学习了下证明了他的说法!但是如何才能自己看到这一过程呢。就是在cl命令后面加上2个参数/c和/p。我试试!这样呢,就会多了1个.i文件。然后我打开它,竟然有400多行,我仔细对照了stdio.h中的内容,是一样的,但是其中有个细节,就是stdio.h文件中也包含了其他文件,所以全部展开后就400多行了!
嗯!现在差不多明白了第一个程序是如何做的了!
PS:“我自己是一名从事了10年的老程序员,最近我花了一个月整理了一份最适合2020年学习的c/c++项目实战以及基础教程干货,送给每一位编程小伙伴,这里是小白聚集地,欢迎初学和进阶中的小伙伴。工作需要、感兴趣、为了入行、转行需要学习C/C++的伙伴可以跟我一起学习,技术大牛、学习资料助你早日成为一名优秀的程序员,快来和志同道合的小伙伴一起加油学习、一起成长进步吧!
官方企鹅群:720168573