找不到for_main.o: in function `main'

我把編譯器器mpif90改成ifort(因為參數不同),我試過-nostartfiles和-nofor_main
但還是一樣錯誤,想問要怎麼解決。

time ifort -o ndown.exe -qopenmp -fpp -auto -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -xHost -fp-model fast=2 -no-heap-arrays -no-prec-div -no-prec-sqrt -fno-common -xCORE-AVX2 -ip -xHost -fp-model fast=2 -no-prec-div -no-prec-sqrt -ftz -align all -fno-alias -fno-common -xCORE-AVX2 ndown_em.o …/dyn_em/module_initialize_real.o libwrflib.a /home/ppinn/wrf-hw/build/WRF_ISC21/external/fftpack/fftpack5/libfftpack.a /home/ppinn/wrf-hw/build/WRF_ISC21/external/io_grib1/libio_grib1.a /home/ppinn/wrf-hw/build/WRF_ISC21/external/io_grib_share/libio_grib_share.a /home/ppinn/wrf-hw/build/WRF_ISC21/external/io_int/libwrfio_int.a -L/home/ppinn/wrf-hw/build/WRF_ISC21/external/esmf_time_f90 -lesmf_time /home/ppinn/wrf-hw/build/WRF_ISC21/external/RSL_LITE/librsl_lite.a /home/ppinn/wrf-hw/build/WRF_ISC21/frame/module_internal_header_util.o /home/ppinn/wrf-hw/build/WRF_ISC21/frame/pack_utils.o -L/home/ppinn/wrf-hw/build/WRF_ISC21/external/io_netcdf -lwrfio_nf -L/home/ppinn/wrf-hw/opt/netcdf-c-4.7.3/lib -lnetcdf
ld: /home/ppinn/intel/oneapi/compiler/2023.0.0/linux/bin/intel64/…/…/compiler/lib/intel64_lin/for_main.o: in function main': for_main.c:(.text+0x19): undefined reference to MAIN__’
Command exited with non-zero status 1

同學好,

如果原文件中使用 mpif90 安裝,代表他使用到了 mpi 的功能。
如果使用 intel OneAPI 建議以 mpifortmpiifort 作為編譯器。


這個意思不是mpiifort可以用ifort呼叫嗎
我選67,他參數-ip-i4都是intel編譯器的參數,這樣不就是只能改編編譯器名稱嗎?


我試過用mpif90把錯誤的參數都刪掉,但這樣的結過好怪。

同學好,

雖然 mpiifort 裡面確實是包著 ifort
如果有需要使用 MPI 的功能就只能用 mpiifort 去編譯。
ifort 沒有辦法編譯 MPI 的東西。

你的結果看起來有成功,不知道你覺得哪裡怪怪的呢?

展佑

他多了一行/bin/rm -f namelist.input ; cp …/test/em_real/namelist.input
再加上編譯時間過短,文件上說大約一小時,雖然的確有出現要求的檔案,但讓我懷疑我那作法是否有問題?
謝謝助教

同學好,

編譯過快可能是因為沒有 make clean,所以 make 在發現 source code 未更改的情況下不會主動重新編譯。

PS make 指令被包在 ./compile 裡面

展佑