2017-12-30 18 views
1

SconsのFortranオブジェクトファイルをリンクする際に問題があります。ここ はsconsのコマンドのコードです:scons gfortran:リンク行から「/ out」を削除

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のデファウト値にもう1つ問題がありました。それは "/ nologo"で、エラーにもつながった。

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

私はLINKFLAGS = ''で解決しました。

+0

どのオペレーティングシステムを使用していますか?無関係な[tag:fortran90]タグの代わりにタグを付けてください。 –

+0

Windows 8 64bit –

答えて

0

TARGET_ARCHは現在MSVC/MSVSにのみ影響します。 だから、あなたはそれを排除することができます。

はまた、Win32の上では

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

はその作業を行い、次のように明示的に多分いない限りはMSVCツールチェーンをデフォルトに起こっているのですか?

+0

はい!ありがとう、それは正しいことを入れている。 –