Fortran 프로그램에서 "decomp_2d"라는 외부 라이브러리를 사용하려고합니다. "decomp_2d"가있는 디렉토리를 가리키는 "DECOMP2D"라고 선언 된 환경 변수가 있습니다. 이 디렉토리의 구조는 다음과 같습니다.Fortran이 외부 라이브러리를 호출 할 수 없습니다.
[[email protected] 2decomp_fft]$ls
doc examples include lib Makefile README src
[[email protected] 2decomp_fft]$ls lib/
lib2decomp_fft.a Makefile
[[email protected] 2decomp_fft]$ls include/
decomp_2d_fft.mod decomp_2d_io.mod decomp_2d.mod glassman.mod
다른 디렉토리에서이 라이브러리의 서브 루틴을 사용하는 프로그램을 호출하려고합니다. 하지만이 일을 할 때 컴파일 시간 오류가 발생합니다. 나는 내가 사용하고있는 컴파일러를 사용하고있는 Makefile과 같은 최소한의 포트란 코드를 붙이고있다. 그것은 후지쯔 기계이며, 그들은 내가 컴파일 사용하고 거기에 자신의 포트란 컴파일러가 :
프로그램을 :
program Sora_v71
! Use the external library
use decomp_2d
integer n
call decomp_2d_init(n,n,n,n,n)
stop
end
메이크 :
# Lines included for using the 2decomp libraries
INC_2DECOMP = -I$(DECOMP2D)/include/
L2DECOMP = -L$(DECOMP2D)/lib/ -l2decomp_fft
## ------------------------------------------------------
RM = rm
SRCDIR = .
LIBDIR = .
BIN = binary
OBJS = main.o
## -------------------------------------------------------
mpifrtpx=$(shell which mpifrtpx)
FC=$(mpifrtpx)
FFLAGS = $(F90FLAG) $(INC_2DECOMP)
LFLAGS = $(F90FLAG) -L$(LIBDIR) $(L2DECOMP)
## -------------------------------------------------------
all: $(BIN)
$(BIN): $(OBJS)
@echo Linking $(BIN) .....
$(FC) $(LFLAGS) -o [email protected] $(OBJS)
.f.o:
@echo Compiling $*.f
$(FC) $(FFLAGS) -c $(SRCDIR)/$*.f
clean:
@echo 'Cleaning .....'
$(RM) -f core *.o *~ *.L *.O $(BIN) $(SIZE_FILE)
나는 "만들기"를 입력하고 다음 오류가 발생했습니다.
[[email protected] test]$make
Compiling main.f
/opt/FJSVtclang/GM-1.2.0-11/bin/mpifrtpx -I/home/hp120242/k00603/2decomp_fft//include/ -c ./main.f
Linking binary .....
/opt/FJSVtclang/GM-1.2.0-11/bin/mpifrtpx -L. -L/home/hp120242/k00603/2decomp_fft//lib/ -l2decomp_fft -o binary main.o
main.o: In function `MAIN__':
main.f:(.text+0x4c): undefined reference to `decomp_2d.decomp_2d_init_'
main.o:(.data+0x0): undefined reference to `decomp_2d.decomp_2d_init_'
make: *** [binary] Error 1
아이디어가 있으십니까?
어떤 운영 체제 및 컴파일러를 사용합니까? 후지쯔 벡터 머신입니까? 뒤에있는 경로가 정확합니까? –
후지쯔 스칼라 기계입니다. 그리고 네, 경로가 정확한지 : [k00603 @ fe01p03 2decomp_fft] $ PWD /홈/hp120242/k00603/2decomp_fft [k00603 @ fe01p03 2decomp_fft] $ 에코 $ DECOMP2D /홈/hp120242/k00603/2decomp_fft/ – jhaprade
운영 체제 리눅스이고 컴파일러는 mpifrtpx – jhaprade