2013-10-08 42 views
1

我有一个使用一些数学库的Fortran文件my.f90。对于文件和库文件这两个标志在.csh文件在单独的步骤中编译和链接

INC_FLAG = "-I$MATH_DIR/include/LIB_ARCH" 
LINK_FLAG= "-L$MATH_DIR/lib/lib$LIB.ARCH -Bdynamic -limsl -limslblas" 

在终端这工作完全正常

gfortran -o my.o $INC_FLAG my.f90 $LINK_FLAG 

但是,当我尝试做的编译和链接中隔离步骤I定义不能这样做。这种失败

gfortran -c $INC_FLAG my.f90 
gfortran -o my.o $LINK_FLAG 

我需要做的编译和链接分开,因为我将有很多的源文件(.F90),并需要作出哪里编译和链接分别做了makefile文件。我的生成文件不起作用

all: my.o 
     gfortran -o my.o $(LINK_F90) 
my.o: my.f90 
     gfortran $(F90FLAGS) -c my.f90 $< 
clean: 
     rm my.o 

这是怎么回事?

+1

不用担心分开的步骤与Make一起工作,直到您可以让他们在没有Make的情况下工作。 – Beta

回答

1

gfortran -c $INC_FLAG my.f90将编译对象my.o。选项-o指定输出文件的名称 - 因为这是my.o(在你的情况),这必须失败!

尝试gfortran -o APPLICATIONNAME my.o $LINK_FLAG

这同样适用于Makefile。

+0

我试过'gfortran -o plz_work my.o $ LINK_FLAG'和'gfortran -o plz_work.o my.o $ LINK_FLAG',编译器说 IPO链接:找不到“(”gfortran:error:multi文件优化编译(代码1) – user1318806

+0

使用'gfortran -o plz_work my.o',生成的文件将成为可执行文件...什么是您的'$ LINK_FLAG's? –

+0

我的文章的第三行定义了“LINK_FLAG”作为库文件的位置,'gfortran -o plz_work my.o'与使用'gfortran -o plz_work my.o $ LINK_FLAG'给出了相同的错误,这意味着链接器不能链接到源库。链接到库文件的适当语法? – user1318806