1、make.exe
官网介绍:Make是一个工具,它控制从程序的源文件生成程序的可执行文件和其他非源文件。Make从一个名为Makefile的文件中获取如何构建程序的知识,该文件列出了每个非源文件以及如何从其他文件中计算它。当你编写一个程序时,你应该为它编写一个Makefile,这样就可以使用Make来构建和安装程序。
在Linux中是很常见的,比如说Linux中安装远程桌面
make
make install
类似上面这种,就是常见操作。下面我们看下在Windows中如何操作:
下载地址:https://gnuwin32.sourceforge.net/packages/make.htm
选择第一个 Complete package, except sources(没有源码的安装版本),安装之后将C:\Program Files (x86)\GnuWin32\bin 加入到系统环境变量即可
为了实时可以使用,将任务管理器删除“Windows资源管理器”,然后点击“文件”--“运行新任务”,输入“explorer”,这样就可以在命令行中运行make命令了。
C:\Users\Tony>make -v
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.This program built for i386-pc-mingw32
这里也可以看到,版本是3.8.1,是基于mingw32
当然不想加入到环境变量,就来到这个目录,输入cmd,直接定位到这个目录进行操作也可以。系统环境变量只是替你定位了目录而已,减少输入目录时间。
我们来看下实际例子:
src_a.c
#include "stdio.h"
void funca()
{
printf("AA\r\n");
}
src_b.c
#include "stdio.h"
void funcb()
{
printf("BB\r\n");
}
src_c.c
#include "stdio.h"
void funcc()
{
printf("CC\r\n");
}
main.c
#include "stdio.h"
extern void funca();
extern void funcb();
extern void funcc();
int main()
{
funca();
funcb();
funcc();
}
Makefile
main : main.o src_a.o src_b.o src_c.o
gcc main.o src_a.o src_b.o src_c.o -o main
main.o : main.c
gcc main.c -c -o main.o
src_a.o : src_a.c
gcc src_a.c -c -o src_a.o
src_b.o : src_b.c
gcc src_b.c -c -o src_b.o
src_c.o : src_c.c
gcc src_c.c -c -o src_c.o
.PHONY : clean
clean:
del *.o main.exe -rf
然后执行看下效果:
C:\Users\Tony\test>make
gcc main.c -c -o main.o
process_begin: CreateProcess(NULL, gcc main.c -c -o main.o, ...) failed.
make (e=2): 系统找不到指定的文件。
make: *** [main.o] 错误 2
出错了,这里可以看到是gcc的问题,需要安装这个编译器套件,可以下载安装,当然了,这里也可以安装接下来这个mingw一起来解决。
2、 mingw
用这个的更多,下载地址:https://sourceforge.net/projects/mingw/
同样的可以将C:\MinGW\bin加入环境变量,这样就不需要到这个目录来运行了。
在安装的时候可以按照自己的需求来选择安装,一般将mingw32-make这四个给勾选上,然后点Installation里的Apply Changes,就进入安装界面
安装好了之后就会在bin目录看到gcc.exe和mingw32-make.exe等编译器相关
C:\MinGW\bin>mingw32-make -v
GNU Make 3.82.90
Built for i686-pc-mingw32
Copyright (C) 1988-2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
恩,安装成功。因为安装这个的时候就包含有gcc,所以我们回过来执行上面的make看能不能编译成功。
C:\Users\Tony\test>make
gcc main.c -c -o main.o
gcc src_a.c -c -o src_a.o
gcc src_b.c -c -o src_b.o
gcc src_c.c -c -o src_c.o
gcc main.o src_a.o src_b.o src_c.o -o main
没有问题,正常的编译了。然后运行main.exe看下结果:
C:\Users\Tony\test>main
AA
BB
CC
OK,没有问题,make是成功了,现在再验证下刚才安装的mingw
C:\Users\Tony\test>mingw32-make
gcc main.c -c -o main.o
gcc src_a.c -c -o src_a.o
gcc src_b.c -c -o src_b.o
gcc src_c.c -c -o src_c.o
gcc main.o src_a.o src_b.o src_c.o -o main
然后在这个目录输入cmd,进入到这个目录,输入main ,结果也是没有问题,另外还可以将编译生成的所有文件给删除
C:\Users\Tony\test>mingw32-make clean
del *.o main.exe -rf