1

Mac で gfortran を使用してメイクファイルを実行しようとしています。Fedora 18 では問題なくコンパイルできますが、HPC の最新の gfortran を使用した Mac OS 10.8.4 では動作しません。私はfortranの初心者なので、光をいただければ幸いです。Makeファイルは次のとおりです。

# Makefile made to work with GNU Make

.DEFAULT:

BIN=bin
OBJ=obj

vpath= %$(OBJ)/.o    $(OBJ)
vpath= %.mod  $(OBJ)

EXES= pasos   \
      pasosng \
      pasosm  \
      trans   \
      cost    \
      lcal    \
      fluj    \
      loc     \
      eval    \
      impas   \
      imptra  \
      mats    \
      imploc  \
      matesp  \
      dimen

FC=gfortran
LN=gfortran

FCFLAGS=$(USER_FCFLAGS) -g3 -B $(OBJ) -J $(OBJ) @fc_options @fc_warnings

LFLAGS=$(USER_LFLAGS)

ifdef SystemRoot
    dotexe=.exe
endif

ifdef F_PROFILE
    FCFLAGS:=$(FCFLAGS) -pg
    LFLAGS:=$(LFLAGS) -pg
endif

ifdef F_TEST
    FCFLAGS:=-O0 -fbounds-check $(FCFLAGS)
else
    FCFLAGS:=-O3 $(FCFLAGS)
endif

COMPILE=$(FC) $(FCFLAGS) -o $@ -c $< 
LINK=$(LN) $(LFLAGS) -o $@ -Wl,-Map=$@.map $^

%.o : %.f90
    $(COMPILE)

all: prepare $(EXES)
$(OBJ)/%.o : %.f90
    $(COMPILE)


clean:
    rm -rf $(OBJ) $(BIN)

prepare: $(BIN) $(OBJ)

$(BIN):
    mkdir $(BIN)

$(OBJ):
    mkdir $(OBJ)


pasos: prepare $(BIN)/pasos$(dotexe)
    @echo $@

$(BIN)/pasos$(dotexe) : $(OBJ)/pasos.o \
        $(OBJ)/nodes.o  \
        $(OBJ)/io_list.o  \
        $(OBJ)/rcomm.o  \
        $(OBJ)/tparc.o  \
        $(OBJ)/zcomm.o  \
    $(OBJ)/rcomm.o \
    $(OBJ)/pcomm.o \
        $(OBJ)/getoptm.o  \
        $(OBJ)/control.o  \
        $(OBJ)/heap.o  \
        $(OBJ)/gener.o  \
        $(OBJ)/param.o  \
        $(OBJ)/ascii.o  \
        $(OBJ)/pcomm.o  \
    $(OBJ)/mensamod.o \
    $(OBJ)/optionsm.o \
        $(OBJ)/debugm.o 
    $(LINK)

ファイルは長くなりますが、エラーを理解するために必要かどうかはわかりません。ディレクトリに対してmakeを実行すると、次のエラーが表示されます。

tcapelle$ gnumake
gfortran  -o bin/pasos -Wl,-Map=bin/pasos.map obj/pasos.o obj/nodes.o obj/io_list.o obj/rcomm.o obj/tparc.o obj/zcomm.o obj/pcomm.o obj/getoptm.o obj/control.o obj/heap.o obj/gener.o obj/param.o obj/ascii.o obj/mensamod.o obj/optionsm.o obj/debugm.o
            ld: unknown option: -Map=bin/pasos.map
            collect2: error: ld returned 1 exit status
        gnumake: *** [bin/pasos] Error 1

編集:メイクファイルで変更しました

LINK=$(LN) $(LFLAGS) -o $@ -Wl,-Map=$@.map $^

LINK=$(LN) $(LFLAGS) -o $@ $^

いくつかのエラーでコンパイルされますが、機能しました。この -Wl,-Map= は何をしますか?

4

1 に答える 1