0

我在带有 gcc 和 gsl 库的 windows 7 中使用 make 编译时遇到问题。它仅在使用 make 时发生(当我在 cmd 行中手动键入编译命令时,它会正确编译)。我发现了一些帖子,人们在 gcc 中遇到了类似的错误,但在正常输入时却没有,但在使用 make 时却没有。我的 Makefile 的内容如下所示:

#Compiler
COMP=gcc
# Compiler Flags.  -Wall turns on all warnings
FLAGS=-Wall
# GSL include file dir
INCLUDES=GnuWin32/include
# GSL Libraries directory
LIB=GnuWin32/lib
# Library Flags
LFLAGS=-lgsl -lgslcblas -lm
# Target Program
EXE=ex2.1.exe
# Dependencies needed for $(PROGRAM)
OBJ=ex2.1.o
# List of source files for objects
SRC=ex2.1.c
# List with types of files to be cleared by clean:
TRASH=*.exe *.o
# I/O files to be cleaned with 'very clean' target
#IOFILES= *.dat *.out *.csv *.mod

all: $(SRC) $(EXE)

$(EXE): $(OBJ)
    $(COMP) -L/$(LIB) $(OBJ) $(LFLAGS) -o $(EXE)

$(OBJ): $(SRC)
    $(COMP) -I/GnuWin32/include -c ex2.1.c
    #$(COMP) -I/$(INCLUDES) -c $(SRC)

clean:
    del $(TRASH)

如果我只使用目录中的 ex2.1.c 键入 make,我会得到以下输出和错误:

gcc -I/GnuWin32/include -c ex2.1.c
gcc: error: CreateProcess : No such file or directory
make: *** [ex2.1.o] Error 1

但是,如果我首先输入“gcc -I/GnuWiun32/include -c ex2.1.c”,ex2.1.o 会成功创建且没有错误。如果然后键入'make',我会得到以下输出/错误:

gcc -L/GnuWin32/lib ex2.1.o -lgsl -lgslcblas -lm -o ex2.1.exe
gcc: fatal error: -fuse-linker-plugin, but liblto_plugin-0.dll not found
compilation terminated
make: *** [ex2.1.exe] Error 1

但是,如果我手动输入“gcc -L/GnuWin32/lib ex2.1.o -lgsl -lgslcblas -lm -o ex2.1.exe”,那么可执行文件会按应有的方式编译和运行,所以问题似乎出在如何make 正在调用 gcc?我的 PATH 变量包含 make.exe 和 gcc.exe 的路径,所以我不确定我没有正确设置什么。有谁知道可能出了什么问题?谢谢。

4

0 回答 0