scons gfortran:从 link 行中删除“/out”
scons gfortran: remove "/out" from link line
我在 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 的默认值还有一个问题。它是“/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/MSVS。
所以你可以忽略它。
此外,在 win32 上,它将默认使用 MSVC 工具链,除非您明确声明,否则可能如下所示
env = Environment( ENV = os.environ , tools=['gfortran','gnulink'])
...
这样行吗?
我在 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 的默认值还有一个问题。它是“/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/MSVS。 所以你可以忽略它。
此外,在 win32 上,它将默认使用 MSVC 工具链,除非您明确声明,否则可能如下所示
env = Environment( ENV = os.environ , tools=['gfortran','gnulink'])
...
这样行吗?