gcc - gfortran:错误:编译中不支持-fuse-linker-plugin
问题描述
FLEXPART是一个基于 Fortran 的模型,用于模拟大气物种的排放、传输和扩散。
在源代码的编译中,我遇到了一个奇怪的错误。
我的makefile在这里上传。错误显示如下:
/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文件生成,而报错说明flag有问题-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-linker-plugin)。任何建议或提示将不胜感激!
附言
感谢您的评论。我从 webste Explain Linux commands学习。
当 GCC 中的 LTO 支持被启用并且 GCC 被配置为与支持插件(GNU ld 2.21 或更新版本或黄金)的链接器一起使用时,此选项默认启用。
但是,我计算机中的 GNU binutils 是 V2.17。因此,我更新了 binutils,并重新编译了 GCC。然后,可以修复此问题。
解决方案
这可能与 gcc/gfortran 的配置和构建方式有关。
例如,参见https://gcc.gnu.org/ml/gcc-help/2012-04/msg00225.html。
确保在启用 LTO 的情况下构建 gcc 并使用足够新的链接器(“ld”程序,binutils 的一部分)。
推荐阅读
- react-native - 我想要'react-navigation'的降级版本
- reactjs - 嘿,我在反应方面很新,我必须使用“onChange”进行表单验证,如果有效,那么只有状态应该改变。如何以正确的方式做到这一点?
- javascript - 如何在javascript中删除元素的类?
- python - 获取模块“tensorflow.python.keras.utils.layer_utils”没有属性“cached_per_instance”
- linux - Linux 随机间歇性性能问题
- react-native - React Native Google Sign In 在发布模式下不起作用
- java - 运行“应用程序”时出错:找不到目标设备
- powerbi - Power BI 中按经理计数度量的时间表状态
- docker - k8s的证书如何设置为1年以上?
- javascript - ajax 工具提示不加载数据