scons gfortran:删除" / out"来自链接线

时间:2017-12-30 22:22:12

标签: fortran gfortran scons

我在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"从连接线?

P.S。

之前还有一个问题是LINKFLAGS的defaut值。这是" / nologo"并导致错误:

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

我通过LINKFLAGS ='解决了这个问题。 '

1 个答案:

答案 0 :(得分:0)

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

同样在win32上,它将默认为MSVC工具链,除非你明确说明或许如下

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

这有用吗?