文章目录(使用gcc可以直接编译一个c语言程序也可以一步步来编译) 缘起在windows有很多集成开发环境(vs系列,code::blocks等等)可以用,为什么要使用gcc在dos下面编译一个c程序呢?因为博主最近要看一下uC/OS-II方面的东西,然后教材使用的是:任哲的《嵌入式实时操作系统μCOS-II原理及应用》,在这本书里面介绍将c语言程序一步步编译运行的时候使用的是Borland C++3.1精简版,这个编译器在Turbo C的时代是非常受欢迎的,但是在2009年的时候Borland公司都已经被Micro Focus收购了。所以我就想直接用gcc,不用Borland C++了。 正文安装gcc首先安装gcc编译器,这个网上都有教程,如果之前有用过类似code::blocks的集成开发环境的话,gcc编译器都安装好了。博主之前是安装过code::blocks的,所以第一步省了。给个图 记得先给这个bin目录加个PATH环境变量 使用gcc来编译c语言程序使用gcc可以直接编译一个c语言程序,也可以一步步来编译。如下: 直接编译生成.exe文件在桌面上创建一个main.c文件 # include <stdio.h> int main (void) { printf("hello world!!!"); return 0; } 打开cmd,进入main.c所在目录 C:\Users\Administrator\Desktop>
C:\Users\Administrator\Desktop>gcc main.o -o main C:\Users\Administrator\Desktop>main hello world!!! 生成的文件如下图: 在cmd里面使用gcc编译器编译c文件流程进入main.c文件所在目录
C:\Users\Administrator\Desktop>gcc -E main.c -o main.i C:\Users\Administrator\Desktop>gcc -S main.i -o main.s C:\Users\Administrator\Desktop>gcc -c main.i -o main.o C:\Users\Administrator\Desktop>gcc main.o -o main C:\Users\Administrator\Desktop>main hello world!!! 生成的文件如下图所示: 利用gcc编译多个c语言源文件第一步建立文件在桌面建立一个文件夹(main),然后在该文件夹里面建立6个文件,分别为pa.c、pa.h、pb.c、pb.h、pc.c、pc.h、test.c。基本思路是在test.c文件里面引用pa.c、pb.c、pc.c文件里的内容。各个文件的代码如下所示: // pa.h # ifndef PA_H # define PA_H void A_print(); # endif // pa.c # include <stdio.h> # include "pa.h" void A_print() { printf("AAAAAAAAA\n"); } // pb.h # ifndef PB_H # define PB_H void B_print(); # endif // pb.c # include <stdio.h> # include "pb.h" void B_print() { printf("BBBBBBBB\n"); } // pc.h # ifndef PC_H # define PC_H void C_print(); # endif // pc.c # include <stdio.h> # include "pc.h" void C_print() { printf("CCCCCCCC\n"); } // test.c # include "pa.h" # include "pb.h" # include "pc.h" int main (void) { int i = 0; for(i; i < 10; i++) { A_print(); B_print(); C_print(); } return 0; } 编译文件利用上面说过的gcc命令将pa.c、pb.c、pc.c、test.c三个文件编译形成.o文件。形成之后的main目录如下图所示 链接 & 运行下面将pa.o、pb.o、pc.o、test.o文件链接生成test.exe C:\Users\Administrator\Desktop\main>gcc pa.o pb.o pc.o test.o -o test 然后运行,结果和意料之中的一样。 gcc基本参数
参考文献https://zhidao.baidu.com/question/380094783.html (使用gcc可以直接编译一个c语言程序也可以一步步来编译) |
|
来自: 山峰云绕 > 《C及加加编译器底层反汇编逆向工程》