当前位置:  开发笔记 > 运维 > 正文

使用MinGW在Windows上编译小型Gcc项目

如何解决《使用MinGW在Windows上编译小型Gcc项目》经验,为你挑选了2个好方法。

所以我已经用C++编程了将近2年,而且我有幸使用IDE(VS)和可爱的项目设置以及自动链接等.我总是远离任何需要我通过makefile编译的外部库,或者至少是那些用于linux环境/其他编译器的库.

无论如何我现在想要使用一个超级方便的实用程序(Bob Jenkins Perfect Minimal Hash),但它需要我通过makefile编译,不仅如此,而是使用g ++编译器.

我继续前进并获得了mingW32-make实用程序,现在正试图让它工作.我现在在哪里:

成功安装了minGW

成功地称为make实用程序

无法成功完成项目.

我得到的错误是:

C:\ gen_progs\pH值>的mingw32-MAK​​E

mingw32-make:***没有规则来制作目标lookupa.c', needed by lookupa.o'.停止.

和makefile本身:

CFLAGS = -O

.cc.o:
    gcc $(CFLAGS) -c $<

O = lookupa.o recycle.o perfhex.o perfect.o

const64 : $(O)
    gcc -o perfect $(O) -lm

# DEPENDENCIES

lookupa.o : lookupa.c standard.h lookupa.h

recycle.o : recycle.c standard.h recycle.h

perfhex.o : perfhex.c standard.h lookupa.h recycle.h perfect.h

perfect.o : perfect.c standard.h lookupa.h recycle.h perfect.h

现在错误似乎是合理的,至少从我对makefile的最小理解,我有所有引用的.c,.h文件,但是我没有.o文件,似乎没有关于如何制作的任何说明这些.所以我的问题是:

我调用make实用程序错了吗?或者我是否需要先编译目标文件?或者......我需要在make文件中添加一些内容吗?

我再次提到所有引用的.c和.h文件.

编辑:对不起,我实际上错过了那个特定的文件似乎已经消失了.但是,将其添加回来就是我现在得到的错误:

c:\gen_progs\ph>mingw32-make 
cc -O   -c -o lookupa.o lookupa.c 
process_begin: CreateProcess(NULL, cc -O -c -o lookupa.o lookupa.c, ...) failed.

make (e=2): The system cannot find the file specified. 
mingw32-make: *** [lookupa.o] Error 2

Terje Mikal.. 9

关于你的错误"process_begin:CreateProcess(NULL,cc -O -c -o lookupa.o lookupa.c,...)失败."

这是因为make实用程序想要使用"cc"编译器来编译程序,但该编译器不是Mingw-package的一部分.

解决方案:将".cc.o:"更改为".co:".这改变了隐式规则,该规则在编译.c文件时告诉使用什么编译器(下一行是gcc)(原始行告诉它如何编译.cc文件).



1> Terje Mikal..:

关于你的错误"process_begin:CreateProcess(NULL,cc -O -c -o lookupa.o lookupa.c,...)失败."

这是因为make实用程序想要使用"cc"编译器来编译程序,但该编译器不是Mingw-package的一部分.

解决方案:将".cc.o:"更改为".co:".这改变了隐式规则,该规则在编译.c文件时告诉使用什么编译器(下一行是gcc)(原始行告诉它如何编译.cc文件).



2> RBerteig..:

话说要么make -DCC=gcc在命令行或添加行CC=gcc的Makefile顶部会治愈这个问题为好.Make内置处理C源代码的规则,所有C编译器都使用变量CC命名,默认为"cc",即使在Gnu Make中也是向后兼容的原因.

看起来原始的Makefile作者试图通过提供编译.cc文件的自定义规则来解决该问题,但由于.cc项目中没有文件实际上没有使用该规则.

指定正确的值CC优于将显式规则修复为名称.c文件IMHO,因为Makefile通常更易于使用和维护,并且在指定最少可能的信息时是最便携的.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有