scons gfortran:从链接行中删除“/ out”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scons gfortran:从链接行中删除“/ out”相关的知识,希望对你有一定的参考价值。

我在Scons中链接fortran对象文件时遇到问题。这是scons命令的代码:

env = Environment( ENV = os.environ , TARGET_ARCH="x86_64")
env = env.Clone( LINKFLAGS = '', LINK='gfortran', tools = 'gfortran' )
module = env.Object('bin/module.o', source = 'src/module.f90')
main = env.Object('bin/main.o', source = 'src/main.f90')
env.Requires(main, [module])
sources = [module[0], main[0]]
result = env.Program(target = '#release/result', source = sources)

Scons喜欢在链接线中给出:

gfortran -o release/result.exe bin/main.o bin/module.o

但它给出了:

gfortran /OUT:release/result.exe bin/main.o bin/module.o

它会导致错误:

gfortran: error: /OUT:release/result.exe: Invalid argument

如何从链接线中删除“/ OUT”?

附:

之前还有一个问题是LINK FLAGS的默认值。这是“/ nologo”并导致错误:

gfortran /nologo /OUT:release/result.exe bin/main.o bin/module.o
gfortran: error: /nologo: No such file or directory

我通过LINKFLAGS =''来解决它。

答案

TARGET_ARCH目前仅影响MSVC / MSVC。所以你可以省略它。

同样在win32上它将默认为MSVC工具链,除非您明确说明可能如下

env = Environment( ENV = os.environ , tools=['gfortran','gnulink'])
...

那样有用吗?

以上是关于scons gfortran:从链接行中删除“/ out”的主要内容,如果未能解决你的问题,请参考以下文章

linux自动化构建工具-scons指南

使用 gfortran 强制显式变量声明

C++,链接时出错。用 scons 构建

将 gfortran 与英特尔 MKL 链接

与 gcc、g++ 和 gfortran 链接

scons构建mdk工程