初學者執行 make 的錯誤 [論壇 - Ubuntu 程式設計]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊



初學者執行 make 的錯誤
會員一級
註冊日期:
2015/1/13 9:16
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 18
MP : 2 / 451
EXP: 73
離線
大家好:

最近我在ubuntu 10.04上安裝了PGI fortran (pgf90), mpich2-1.2.1p1 與 parallel-netcdf-1.1.1

想執行一個makefile 檔,變數設定如下

CPP = cpp -P
FC = mpif90
LD = mpif90
CLEAN = rm

NETCDFINC = -I/usr/local/parallel-netcdf/include
NETCDFLIB = -L/usr/local/parallel-netcdf/lib
FFLAGS = -i4 -r4 $(NETCDFINC)
FFLAGA = $(NETCDFINC)
LIBS = $(NETCDFLIB) -lpnetcdf

BIN = Exe.x

# Define source directory
SRCDIR = mode

# Define objects
OBJS = parallel_mpi.o \
netcdf.o \
solver.o \

VPATH = $(SRCDIR)


# Set implicit rules for compilation
%.o: %.f
@echo
$(FC) -c $(FFLAGS) $<


# Set implicit rules for dependencies
%.f: %.F
@echo
$(CPP) $(FFLAGS) $< > $*.f


# Create the executable
$(BIN): $(OBJS)
@echo
$(LD) $(FFLAGS) -o $(BIN) $(OBJS) $(LIBS)

# Cleaning target
clean:
@rm -f *.o *.mod


執行makefile後出現以下錯誤,網路上找了,也找不出所以然,想藉由大家力量,給小弟建議。感恩。
$ make

mpif90 -c -i4 -r4 -I/usr/local/parallel-netcdf/include pom/parallel_mpi.f
gfortran: unrecognized option '-r4'
f951: error: unrecognized command line option "-i4"
make: *** [parallel_mpi.o] Error 1

2016/5/30 16:01
應用擴展 工具箱
回覆: 初學者執行 make 的錯誤
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 901
MP : 671 / 29295
EXP: 6
離線
Wanchou 寫到:
大家好:

最近我在ubuntu 10.04上安裝了PGI fortran (pgf90), mpich2-1.2.1p1 與 parallel-netcdf-1.1.1

想執行一個makefile 檔,變數設定如下

CPP = cpp -P
FC = mpif90
LD = mpif90
CLEAN = rm

NETCDFINC = -I/usr/local/parallel-netcdf/include
NETCDFLIB = -L/usr/local/parallel-netcdf/lib
FFLAGS = -i4 -r4 $(NETCDFINC)
FFLAGA = $(NETCDFINC)
LIBS = $(NETCDFLIB) -lpnetcdf

BIN = Exe.x

# Define source directory
SRCDIR = mode

# Define objects
OBJS = parallel_mpi.o \
netcdf.o \
solver.o \

VPATH = $(SRCDIR)


# Set implicit rules for compilation
%.o: %.f
@echo
$(FC) -c $(FFLAGS) $<


# Set implicit rules for dependencies
%.f: %.F
@echo
$(CPP) $(FFLAGS) $< > $*.f


# Create the executable
$(BIN): $(OBJS)
@echo
$(LD) $(FFLAGS) -o $(BIN) $(OBJS) $(LIBS)

# Cleaning target
clean:
@rm -f *.o *.mod


執行makefile後出現以下錯誤,網路上找了,也找不出所以然,想藉由大家力量,給小弟建議。感恩。
$ make

mpif90 -c -i4 -r4 -I/usr/local/parallel-netcdf/include pom/parallel_mpi.f
gfortran: unrecognized option '-r4'
f951: error: unrecognized command line option "-i4"
make: *** [parallel_mpi.o] Error 1


建議可以閱讀

* 用Open Source工具開發軟體: 新軟體開發關念 / Chapter 5. Makefile撰寫
* Makefile範例教學
* GNU Build System (aka Autotools) (slide by $4)


另外你要除錯,可以從你給的提示訊息看起


mpif90 -c -i4 -r4 -I/usr/local/parallel-netcdf/include pom/parallel_mpi.f
gfortran: unrecognized option '-r4'
f951: error: unrecognized command line option "-i4"
make: *** [parallel_mpi.o] Error 1



當你執行「make」,就會從第一個rule開始,

你給的Makefile的第一個Rule


# Set implicit rules for compilation
%.o: %.f
@echo
$(FC) -c $(FFLAGS) $<




你把


$(FC) -c $(FFLAGS) $<



置換上面的,你給的變數


FC = mpif90

FFLAGS = -i4 -r4 $(NETCDFINC)

NETCDFINC = -I/usr/local/parallel-netcdf/include



應該會變成



mpif90 -c -i4 -r4 -I/usr/local/parallel-netcdf/include pom/parallel_mpi.f



也就是執行上面的指令後,會發生錯誤(你可以不透過make,直接執行上面的指令測試)

於是產生下面的提示訊息


gfortran: unrecognized option '-r4'
f951: error: unrecognized command line option "-i4"



所以你要研究的是「mpif90」的參數要怎麼下,

要注意的是,從上面的提示訊息,看起來「mpif90」,
有再呼叫「gfortran」和「f951」這兩個指令的樣子,

我沒有「mpif90」這個指令,所以沒繼續研究「mpif90」,這部份就請自行研究了,



以上僅供參考,純屬分析,沒實際去下指令測試,

報告完畢。


2016/5/30 16:48
應用擴展 工具箱
回覆: 初學者執行 make 的錯誤
會員一級
註冊日期:
2015/1/13 9:16
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 18
MP : 2 / 451
EXP: 73
離線
謝謝

2016/5/31 14:50
應用擴展 工具箱


 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.