我有主程序Engine.f
,它在LIB.f
中调用函数/外部函数。
与C ++和Java不同,主程序中没有包含,因此可以进行编译。
我的Fortran编译器如何知道我正在使用另一个库?
我正在使用Eclipse中的photran。
MAKE文件:
.PHONY: all clean
# Change this line if you are using a different Fortran compiler
FORTRAN_COMPILER = gfortran
all: src/Engine.f
$(FORTRAN_COMPILER) -O2 -g \
-o bin/Engine.exe \
src/Engine.f
clean:
rm -f bin/Engine.exe *.mod
我在编译时遇到的错误:
undefined reference to (name of function in **LIB.f**)
答案 0 :(得分:1)
.PHONY: all clean
all: Engine.exe
# Change this line if you are using a different Fortran compiler
FORTRAN_COMPILER = gfortran
FORTRAN_FLAGS=-O2 -g
%.o: src/%.f
$(FORTRAN_COMPILER) $(FORTRAN_FLAGS) -c $<
Engine.exe: Lib.o Engine.o
$(FORTRAN_COMPILER) $(FORTRAN_FLAGS) \
-o bin/Engine.exe \
Lib.o Engine.o
clean:
rm -f *.o *.mod
在FORTRAN 77中,编译器“正义”需要在链接时在.o
文件中提供该功能。您可以在下面测试Makefile,它应该执行您想要的操作。
如果您升级到Fortran的现代版本,则使用模块文件来构建库。