Windows 7 で gcc と gsl ライブラリを使用して 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 の両方へのパスが含まれているため、何を正しく設定していないのかわかりません。誰が何が間違っているのか考えていますか? ありがとう。