我正在使用 cygwin。大多数 Unix 命令都可以正常工作。我也可以使用 g++ 和 gcc 进行编译,但执行 make 时出现以下错误:
/cygdrive/b/tpm/src
$ make -f makefile.mak
"c:/program files/mingw/bin/gcc.exe" -Wall -Wnested-externs -ggdb -O0 -c -
DTPM_WINDOWS -I"c:/program files/MinGW/include" -I"c:/program
files/openssl/include" -I../utils -I. -DNO_BIT_FIELD_STRUCTURES AlgorithmCap.c -o AlgorithmCap.o
make: *** [makefile.mak:85: AlgorithmCap.o] Error 1
请注意,我已经下载了 make 包并将 bin 添加到路径中。
答案1
主要错误显示在以下行:
$ make -f makefile.mak“c:/program files/mingw/bin/gcc.exe”-Wall -Wnested-externs -ggdb -O0 -c -
此错误表明 cygwinmake
找到了 C 编译器路径,即$(CC)
。C:\Program Files\mingw\bin\gcc.exe
这里 OP 在同一台机器上安装了 mingw 和 cygwin。当相应的安装程序安装 cygwin 和 mingw 时,它会将/bin
文件夹添加到系统环境变量中%PATH%
。因此,在编译时,cygwinmake
会抓取 mingw 目录中的第一个gcc.exe
路径,然后出现错误。
为了消除路径混淆,%PATH%
需要正确配置环境变量。有关如何编辑环境变量的更多详细信息,请参见以下链接。这里我给出了一个简单的概述。使用Win+打开运行对话框R。输入control.exe
它并按回车键。转到系统和安全>系统>高级系统设置>环境变量>系统变量>路径。
双击“Path”变量。你会看到一个“编辑环境变量”窗口。删除两个路径C:\cygwin
和C:\Program Files\mingw\bin
键Delete。
现在创建两个批处理文件,一个是 cygwin.bat,另一个是 mingw.bat。这可以在一个文件中完成,我只是尽量简单。将以下几行复制到相应的批处理文件中。这些命令将配置要编译的环境。
- 对于 cygwin:
@echo off
C:
chdir C:\cygwin\bin
C:\cygwin\bin\bash.exe --login -i
- 对于 mingw:
@echo off
set PATH=C:\Program Files\mingw\bin;%PATH%
cmd /k