为什么使用 -E 标志和 -cpp? (gfortran 预处理选项)
For what is it used -E flag with -cpp? (gfortran preprocessing options)
我正在使用以下选项:
touch foo.f90; gfortran -cpp -E -dM foo.f90
,但是当我删除 -E 标志时出现此错误:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
collect2: error: ld returned 1 exit status
因为我使用 'touch' 文件是空的。
-E
标志在 the manual 中有描述。
If you use the -E option, nothing is done except preprocessing. Some
of these options make sense only together with -E because they cause
the preprocessor output to be unsuitable for actual compilation.
它使编译器打印预处理后的源代码而不是编译它。这意味着由 C 预处理器 cpp
预处理。
如果您的源代码不是有效的 Fortran 程序,那么尝试实际编译它(没有 -E
标志)自然会导致某种错误消息。
我正在使用以下选项:
touch foo.f90; gfortran -cpp -E -dM foo.f90
,但是当我删除 -E 标志时出现此错误:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
collect2: error: ld returned 1 exit status
因为我使用 'touch' 文件是空的。
-E
标志在 the manual 中有描述。
If you use the -E option, nothing is done except preprocessing. Some of these options make sense only together with -E because they cause the preprocessor output to be unsuitable for actual compilation.
它使编译器打印预处理后的源代码而不是编译它。这意味着由 C 预处理器 cpp
预处理。
如果您的源代码不是有效的 Fortran 程序,那么尝试实际编译它(没有 -E
标志)自然会导致某种错误消息。