OS X 10.12.6环境下使用g77编译旧版Fortran代码的ld版本警告问题求助
解决g77编译时macOS版本不匹配警告的方案
以下是设置macosx_version_min的方法:
方法一:在编译命令中直接指定链接器参数
你可以在原有的g77编译选项里加上-Wl,-macosx_version_min,10.12.6,这个参数的作用是告诉g77把指定的macOS最小版本参数传递给链接器ld。完整的编译命令如下:g77 -ffixed-line-length-132 -fbounds-check -fvxt -ftypeless-boz -finit-local-zero -fno-automatic -Wl,-macosx_version_min,10.12.6 *.f -o a.out添加这个参数后,链接器就会以10.12.6作为目标最小版本,和当前系统生成的目标文件版本匹配,从而消除版本不匹配的警告。
方法二:通过环境变量全局设置
要是不想每次编译都手动加参数,可以先在终端里设置LDFLAGS环境变量,让g77自动读取这个链接器配置:export LDFLAGS="-macosx_version_min 10.12.6"执行完这条命令后,再运行你原来的编译命令就行。如果希望这个设置永久生效,还能把这条export命令添加到
~/.bash_profile或者~/.zshrc文件里(根据你用的shell类型选)。
补充说明下:你遇到的第二个警告,是因为macports更新后,编译器生成的目标文件适配当前的OS X 10.12版本,但链接器默认用了10.6的最小版本,才出现版本不兼容的提示。把macosx_version_min设成和系统一致的10.12.6,就能彻底解决这两个警告问题。
内容的提问来源于stack exchange,提问作者JPGConnolly




