cpp预处理器为Fortran编译器添加不需要的文本

斯蒂尔加

我相信我的Makefile(编译Fortran代码)所使用的cpp预处理器有问题。我最近更改了操作系统,现在编译无法正常工作,而且我对Makefiles或预处理器的了解不足以解决该问题(Makefile是很多年前提供给我的)。

我最近从Fedora 10更新到Fedora 19(是的,应该早些做)。将代码复制到新系统并运行gmake后,我发现编译存在问题。据我了解,应该发生的事情是我的.F文件已经过预处理并写为.f文件。显然,cpp预处理器现在正在添加某种GNU免责声明(“ / *版权所有(C)1991-2012自由软件基金会,该文件是GNU C库的一部分。”。),编译器( f77)不喜欢。原则上,我可以从每个生成的.f文件中删除此文本,但是严重的是,这花费了太多时间。

我真的不知道是什么原因造成的。我想告诉cpp不要输出此文本,或者f77忽略它,但是还没有找到管理此文本的任何标志。考虑重新编写Makefile(例如,使用更现代的编译器),但是目前我对此一点希望都没有。希望有人可以帮助我。我正在复制下面的Makefile以及输出。

提前致谢。


生成文件


# Make sure the SHELL is right
SHELL = /bin/sh
MAKE  = gmake

 # Define several root directories       
 LEP_ROOT    := /home/stilgar/SUSY/NeutrinoModel2
 CERN_ROOT   := /usr/lib64/cernlib/2006
 INCLUDES    := $(LEP_ROOT)/include 
 INCLUDES    := $(strip $(INCLUDES))
 incpath     := $(subst $(space),:,$(INCLUDES))

 vpath %.inc $(incpath)

 # Define tree       
 BIN_DIR := $(LEP_ROOT)/bin

 # Define source directory
 SRCDIR := $(LEP_ROOT)/src

 # Libraries
 libs :=  $(CERN_ROOT)/lib
 libs :=  $(addprefix -L, $(libs)) 
 libs += `cernlib packlib,mathlib,packlib,kernlib`

 #Source files
 #Main Program
 src_files += $(wildcard $(SRCDIR)/main_lfv.F)
 #SM Parameters 
 src_files += $(wildcard $(SRCDIR)/param_basic.F)
 src_files += $(wildcard $(SRCDIR)/numajmass.F)
 #SUSY Spectrum
 src_files += $(wildcard $(SRCDIR)/texture2.F)
 src_files += $(wildcard $(SRCDIR)/minserts.F)
 #SUSY Flavour
 src_files += $(wildcard $(SRCDIR)/gmin2.F)
 src_files += $(wildcard $(SRCDIR)/lfv.F)
 #Bounds
 src_files += $(wildcard $(SRCDIR)/experiment.F)
 src_files += $(wildcard $(SRCDIR)/directsearch.F)
 #Loop Functions
 src_files += $(wildcard $(SRCDIR)/fedm.F)
 src_files += $(wildcard $(SRCDIR)/gedm.F)
 #Mathematical Tools
 src_files += $(wildcard $(SRCDIR)/biunitary3.F)

 main_obj_files += $(src_files:%.F=%.o)
 main_ofiles    += $(notdir $(main_obj_files))
 main_files     += $(src_files:%.F=%.f)
 depend         += $(main_obj_files:.o=.d)

 # Name of the executable to be created
 exectry := $(BIN_DIR)/RunStuff

 # Define flags 
 FC = f77
 #FC = gfortran
 #FC = g95
 FFLAGS += -c 
 FFLAGS += $(addprefix -I, $(INCLUDES))  

 # Define cpp options
 CPP = cpp
 CPPFLAGS += -C -P -E
 CPPFLAGS += $(addprefix -I, $(INCLUDES))

 .PHONY : all clean cleanall help
 .PHONY : sclean 

 all: $(exectry)

 $(exectry): $(main_obj_files) $(main_files) 
 @echo '==================================================='
 @echo '    Building executable ' $(exectry)
 @echo '    '
 @-rm -f $@
 $(FC) -o $@ $(main_obj_files) $(LFLAGS) $(libs)
 @echo '    Done '
 @echo '==================================================='

 clean : sclean
 @echo
 @echo Cleaning up  *.o  *~ core
 @echo
 @-rm -f *.o  core 
 @echo done.
 sclean :
 @find . -name "*.bak" -exec rm -f '{}' ';'
 @find . -name "*~" -exec rm -f '{}' ';'
 @find . -name "#*#"             -exec rm -f '{}' ';'

 cleanall : 
 @echo '**********************************************************'
 @echo ' Clean all : '
 @find . -name "*.bak" -exec rm -f '{}' ';'
 @find . -name "*~" -exec rm -f '{}' ';'
 @find . -name "*.log"           -exec rm -f '{}' ';'
 @find . -name "*.out"           -exec rm -f '{}' ';'
 @find . -name "core"            -exec rm -f '{}' ';'
 @find . -name "#*#"             -exec rm -f '{}' ';'
 @-rm -f *.o *.d
 @echo done.
 @echo '**********************************************************'
 help:
 @echo 
 @echo '  The possible options are :'
 @echo '  ========================  '
 @echo 
 @echo '  gmake         -- build batch executable'  
 @echo '  gmake sclean   -- simple clean up '    
 @echo '  gmake clean    -- clean up a bit more '
 @echo '  gmake cleanall -- clean everything'
 @echo

 %.f:%.F
 @echo Preprocessing ... $<
 @$(CPP) $(CPPFLAGS)  $< > $@

 %.o:%.f
 @echo Compiling ... $<
 @$(FC) $(FFLAGS) -o $@ $<

 %.d:%.F
 @touch $@
 @echo Updating ... $@        
 @makedepend -- $(CPPFLAGS) -- $< -f $@
 @-rm [email protected]

输出量


 Preprocessing ... /home/stilgar/SUSY/NeutrinoModel2/src/main_lfv.F
 Compiling ... /home/stilgar/SUSY/NeutrinoModel2/src/main_lfv.f
 /home/stilgar/SUSY/NeutrinoModel2/src/main_lfv.f:2: 
       This file is part of the GNU C Library.
       ^
 Non-numeric character at (^) in label field [info -f g77 M LEX]
 /home/stilgar/SUSY/NeutrinoModel2/src/main_lfv.f:4: 
       The GNU C Library is free software; you can redistribute it and/or
       ^
 Non-numeric character at (^) in label field [info -f g77 M LEX]
 /home/stilgar/SUSY/NeutrinoModel2/src/main_lfv.f:5: 
       modify it under the terms of the GNU Lesser General Public
       ^
 Non-numeric character at (^) in label field [info -f g77 M LEX]

 (...)

 gmake: *** [/home/stilgar/SUSY/NeutrinoModel2/src/main_lfv.o] Error 1
疯狂的科学家

我认为问题出-CCPPFLAGS变量中。的手册页cpp指出,这会使预处理器不放弃注释。我不想要你 删除该标志。

另一个要点:您永远不想MAKE在makefile中设置变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

编译器开关还是预处理器开关?

来自分类Dev

编译器开关还是预处理器开关?

来自分类Dev

具有预处理器的C ++“编译器”

来自分类Dev

不需要的选项传递给编译器

来自分类Dev

不需要的选项传递给编译器

来自分类Dev

如何摆脱为条件编译定义预处理器宏的需要?

来自分类Dev

力学Fortran预处理器

来自分类Dev

如何区分预处理器和编译器指令?

来自分类Dev

是否通过CMake或预处理器检查检测C ++编译器的[[noreturn]]支持?

来自分类Dev

Dart中有编译器预处理器吗?

来自分类Dev

如何区分预处理器和编译器指令?

来自分类Dev

编译器未找到预处理器指令(定义)

来自分类Dev

为什么C编程需要编译器而shell脚本不需要?

来自分类Dev

预处理器,汇编器和链接器是否是编译器的一部分?

来自分类Dev

将Mocha与Babel编译器一起使用时可以不需要模块

来自分类Dev

从编译器获取参数时,有没有办法避免预处理器宏?

来自分类Dev

为什么只能通过MCU GCC编译器(STM32CubeIDE)的预处理器激活FFT功能?

来自分类Dev

clang编译器中用于定义预处理器要使用的宏的标志是什么?

来自分类Dev

包括与Fortran预处理器一起显示

来自分类Dev

带换行符的Fortran预处理器宏

来自分类Dev

Cpp,强制执行预处理器评估顺序

来自分类Dev

如果我对结构的字段进行布局以使它们不需要任何填充,那么合格的C ++编译器是否还能添加额外的内容?

来自分类Dev

为Macports选择Fortran编译器

来自分类Dev

注释处理器,生成编译器错误

来自分类Dev

预处理器更换

来自分类Dev

C ++预处理器

来自分类Dev

CSS预处理器?

来自分类Dev

C ++预处理器

来自分类Dev

即使使用相同的编译器,针对特定精度的Fortran种类参数也会根据处理器而变化吗?

Related 相关文章

  1. 1

    编译器开关还是预处理器开关?

  2. 2

    编译器开关还是预处理器开关?

  3. 3

    具有预处理器的C ++“编译器”

  4. 4

    不需要的选项传递给编译器

  5. 5

    不需要的选项传递给编译器

  6. 6

    如何摆脱为条件编译定义预处理器宏的需要?

  7. 7

    力学Fortran预处理器

  8. 8

    如何区分预处理器和编译器指令?

  9. 9

    是否通过CMake或预处理器检查检测C ++编译器的[[noreturn]]支持?

  10. 10

    Dart中有编译器预处理器吗?

  11. 11

    如何区分预处理器和编译器指令?

  12. 12

    编译器未找到预处理器指令(定义)

  13. 13

    为什么C编程需要编译器而shell脚本不需要?

  14. 14

    预处理器,汇编器和链接器是否是编译器的一部分?

  15. 15

    将Mocha与Babel编译器一起使用时可以不需要模块

  16. 16

    从编译器获取参数时,有没有办法避免预处理器宏?

  17. 17

    为什么只能通过MCU GCC编译器(STM32CubeIDE)的预处理器激活FFT功能?

  18. 18

    clang编译器中用于定义预处理器要使用的宏的标志是什么?

  19. 19

    包括与Fortran预处理器一起显示

  20. 20

    带换行符的Fortran预处理器宏

  21. 21

    Cpp,强制执行预处理器评估顺序

  22. 22

    如果我对结构的字段进行布局以使它们不需要任何填充,那么合格的C ++编译器是否还能添加额外的内容?

  23. 23

    为Macports选择Fortran编译器

  24. 24

    注释处理器,生成编译器错误

  25. 25

    预处理器更换

  26. 26

    C ++预处理器

  27. 27

    CSS预处理器?

  28. 28

    C ++预处理器

  29. 29

    即使使用相同的编译器,针对特定精度的Fortran种类参数也会根据处理器而变化吗?

热门标签

归档