代码之家  ›  专栏  ›  技术社区  ›  Han Zhengzu

gfortran:错误:-编译中不支持fuse链接器插件

  •  0
  • Han Zhengzu  · 技术社区  · 6 年前

    FLEXPART 是一个基于fortran的模型,用于模拟大气物种的排放、传输和扩散。

    source code ,我遇到了一个奇怪的错误。

    我的生成文件已上载 here 是的。 错误显示如下:

    /disk2/hyf/lib/gcc-4.9.4/bin/gfortran -o FP_gfs_gfortran par_mod.o          com_mod.o conv_mod.o              hanna_mod.o interpol_mod.o          cmapf_mod.o unc_mod.o               oh_mod.o xmass_mod.o             flux_mod.o point_mod.o             outg_mod.o random_mod.o advance.o     initialize.o writeheader.o      writeheader_txt.o writeheader_surf.o        assignland.o part0.o        gethourlyOH.o caldate.o               partdep.o coordtrafo.o            psih.o raerod.o         readcommand.o drydepokernel.o         readreceptors.o erf.o                   readavailable.o ew.o          readreleases.o readdepo.o psim.o            outgrid_init.o outgrid_init_nest.o photo_O1D.o      readlanduse.o interpol_wind.o         readoutgrid.o interpol_all.o          readpaths.o getrb.o getrc.o getvdep.o               readspecies.o interpol_misslev.o scalev.o pbl_profile.o           readOHfield.o juldate.o interpol_vdep.o         interpol_rain.o hanna.o                 wetdepokernel.o mean.o                  wetdepo.o hanna_short.o           windalign.o hanna1.o gridcheck_nests.o readwind_nests.o        calcpar_nests.o verttransform_nests.o   interpol_all_nests.o interpol_wind_nests.o   interpol_misslev_nests.o interpol_vdep_nests.o   interpol_rain_nests.o readageclasses.o calcfluxes.o            fluxoutput.o qvsat.o                 skplin.o convect43c.o sort2.o                 distance.o centerofmass.o          plumetraj.o openouttraj.o           calcpv.o calcpv_nests.o          distance2.o clustering.o            interpol_wind_short.o interpol_wind_short_nests.o shift_field_0.o shift_field.o openreceptors.o readoutgrid_nest.o writeheader_nest.o writeheader_nest_surf.o wetdepokernel_nest.o drydepokernel_nest.o    zenithangle.o ohreaction.o            getvdep_nests.o initial_cond_calc.o     initial_cond_output.o dynamic_viscosity.o     get_settling.o initialize_cbl_vel.o   re_initialize_particle.o cbl.o          netcdf_output_mod.o releaseparticles.o  partoutput.o conccalc.o init_domainfill.o   concoutput.o timemanager.o FLEXPART.o readpartpositions.o partoutput_short.o concoutput_nest.o boundcond_domainfill.o redist.o concoutput_surf.o    concoutput_surf_nest.o getfields.o calcpar_gfs.o          readwind_gfs.o richardson_gfs.o       verttransform_gfs.o obukhov_gfs.o          gridcheck_gfs.o convmix_gfs.o          calcmatrix_gfs.o -I/disk2/hyf/lib/grib_api/include -I/disk2/hyf/lib/netcdf-4.6.1/include -I/disk2/hyf/lib/hdf5/include -O2  -g -m64 -mcmodel=medium -fconvert=little-endian -frecord-marker=4 -fmessage-length=0 -flto=jobserver -O2  -mtune=native -fuse-linker-plugin   -L/disk2/hyf/lib/grib_api/lib -L/disk2/hyf/lib/jasper/lib -L/disk2/hyf/lib/netcdf-4.6.1/lib -L/disk2/hyf/lib/hdf5/lib -lgrib_api_f90 -lgrib_api -lm -ljasper -lnetcdff   
    gfortran: error: -fuse-linker-plugin is not supported in this configuration
    make: *** [FP_gfs_gfortran] Error 1
    

    在编译路径中,所有的*.o文件都可以从*.f90文件生成,而错误显示标志有问题 -fuse-linker-plugin

    #My computer system
    $uname -a
    Linux Xiehost 2.6.18-348.el5 #1 SMP Tue Jan 8 17:53:53 EST 2013 x86_64 x86_64 x86_64 GNU/Linux   
    
    $gfortran -v
    Using built-in specs.
    COLLECT_GCC=gfortran
    COLLECT_LTO_WRAPPER=/disk2/hyf/lib/gcc-4.9.4/libexec/gcc/x86_64-unknown-linux-gnu/4.9.4/lto-wrapper
    Target: x86_64-unknown-linux-gnu
    Configured with: ../gcc-4.9.4/configure --prefix=/disk2/hyf/lib/gcc-4.9.4 --enable-languages=c,c++,fortran,go
    Thread model: posix
    gcc version 4.9.4 (GCC) 
    

    我不知道怎么解决这个问题( -编译中不支持fuse链接器插件 )中。任何建议或提示将不胜感激!

    聚苯乙烯

    谢谢你的评论。我从韦伯斯特那里学到的 Explain Linux commands 是的。

    默认情况下,当gcc中的lto支持被启用,并且gcc被配置为与支持插件(gnu ld 2.21或更新版本或gold)的链接器一起使用时,此选项被启用。

    但是,我的计算机中的gnu binutils是v2.17。因此,我更新了binutils,并重新编译gcc。那么,这个问题就可以解决了。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Pierre de Buyl    6 年前

    这可能与gcc/gfortran的配置和构建方式有关。

    https://gcc.gnu.org/ml/gcc-help/2012-04/msg00225.html 例如。

    确保在启用LTO的情况下构建GCC,并使用足够新的链接器(“ld”程序,binutils的一部分)。