C语言查缺补漏(二)编译运行命令

C语言查缺补漏(二)

忽略点二:使用IED而忽略最基础的命令

大一开始使用CodeBlocks来写C语言程序,后来用VS,再后来Xcode。最近才发现一个问题,自己竟然不会使用终端编译执行.C文件。这种最基本的东西,很遗憾在这两年学习中被我无情的忽略了。

​ 第一步: cd到.c文件所在目录

$ cd 路径地址		

​ 第二步:编译源文件并生成可执行代码文件,举个例子

$ gcc main.c	//编译main.c文件,生成可执行文件(默认名a.out)	
$ gcc -o program main.c	  //main.c为源文件,program为生成的可执行文件

关于默认生成的a.out,它是临时性的可执行文件。如果同一路径下多个c语言源文件采用了默认编译,a.out中输出的内容为最后一个C语言源文件所执行的结果(也就是说之前源文件编译生成的a.out被覆盖掉了)

这时候就体现了 gcc -o 的-o的作用 它可以指定生成输出文件

以下到第三步之前是附加内容(除此之外

选项 -E 可以将test.c预处理输出(其中-E的功能是预处理test.c并输出到终端,不生成文件)

$ gcc -E test.c -o test.i
$ gcc -E test.c > test.i        //其中>为重定向符

选项 -S 可以将test.c汇编成test.s文件(也就是从源文件->汇编代码)

$ gcc -S  -o test.s test.c 
$ gcc -S test.c (简写 效果一样)
$ gcc -S test.c > test.s

选项 -c 可将test.c编译输出到test.o文件 (编译过程中的中间文件)

$ gcc -c  -o test.o test.c 
$ gcc -c test.c (简写 效果一样)

其中: .i文件是进行预编译之后生成的文件,一般是引用头文件的内容和一些宏定义

​ .s文件是汇编语言源文件,一般是 .c 文件经过汇编器处理后的输出

扫描二维码关注公众号,回复: 3461006 查看本文章

​ .o文件程序编译中的目标文件(注意是编译中,不是最终!)里面包含了各个函数的入口标记与描述,程序执行还需要链接(link).链接就是把多个.o文件链成一个可执行文件。)

​ 第三步:执行可执行文件

$ ./program

以上就是用命令行实现C语言的编译运行的全过程

对于项目(多文件),我们无法单个的编译运行,这时候我们应该怎么办呢?

​ 第一步: 分别用-c命令编译每个.c文件(包括main函数文件)

$ gcc -c xxx.c

我们会得到每个xxx.c文件的目标文件xxx.o

​ 第二步:将主程序的目标代码与他们链接在一起

​ 例如下面命令是将项目的所有目标代码xxx.o与main.o链接在一起,并输出了可执行文件program

$ gcc main.o xxx.o xxx.o xxx.o -o program

这样一个项目多文件代码就可以运行啦!

转载请注明出处!!!

如果有写的不对或者不全面的地方 请指正! 谢谢~

猜你喜欢

转载自blog.csdn.net/Ivan_zcy/article/details/82916991