2012-06-18 2 views
0

Linux에서 BLACS 패키지를 컴파일 중입니다. INSTALL 디렉토리의 내용 인 패키지를 컴파일했습니다. 내가 디렉토리 테스트의 내용을 구축 할 때, 나는 얻을BLACS 컴파일시 Fortran C - 호출 규칙 - 밑줄 불일치

blacstest.f:(.text+0xb9): undefined reference to `blacs_gridinit_' 

내가 라이브러리에서 함수를 찾고 시도, 내가받을 메시지가 오류

~/sources/BLACS/LIB$ nm blacs_MPI-LINUX-0.a | less | grep blacs_gridinit_ 
blacs_gridinit_.o: 
0000000000000000 T blacs_gridinit__ 
Cblacs_gridinit_.oo: 

그래서 함수는 있지만 이중 밑줄이 있습니다. 그것이 단지 하나를 만드는 방법?

나는 Bmake.inc에서 몇 가지 시도를 해 보았습니다.

# INTFACE = -Df77IsF2C 
# INTFACE = -fno-underscoring 
    INTFACE = -DAdd_ 

하지만 그 중 아무 것도 작동하지 않는 것 같습니다. 누구나이 경험이 있습니까?

감사합니다. Elan.

편집 : BLACS는 모든 항목이 구성된 .inc 파일과 함께 제공됩니다. 나는 가지고있다 :

F77   = mpif77 
    F77NO_OPTFLAGS = 
    F77FLAGS  = $(F77NO_OPTFLAGS) -O -fPIC 
    F77LOADER  = $(F77) 
    F77LOADFLAGS = 
    CC    = mpicc 
    CCFLAGS  = -O4 -fPIC 
    CCLOADER  = $(CC) 
    CCLOADFLAGS = 

-assume 2underscore는 컴파일 플래그 중 하나에서 받아 들여지지 않았다. 또한, 템플릿 .inc 파일은 말한다 :

# --------------------------------------------------------------------------- 
# The Fortran 77 to C interface to be used. If you are unsure of the correct 
# setting for your platform, compile and run BLACS/INSTALL/xintface. 
# Choices are: Add_, NoChange, UpCase, or f77IsF2C. 
# --------------------------------------------------------------------------- 
# INTFACE = -Df77IsF2C 
+0

'-DNoChange'를 시도 했습니까? –

+0

예, 여전히 동일합니다. – Elan

+0

어떤 컴파일러와 링커를 사용하고 있습니까? '-assume 2underscores'와 같은 깃발을 보셨나요? –

답변

2

EasyBuild이 (부분적으로) BLACS의 빌드 절차를 구현하는 파이썬 코드 https://github.com/hpcugent/easybuild-easyblocks/blob/master/easybuild/easyblocks/b/blacs.py를 참조하십시오, 당신을 위해이 문제를 해결합니다.

아직 테스트를 빌드하지 않지만 BLACS를 올바른 방식으로 빌드합니다.

template.inc 파일에서 이미 보았 듯이 xintface 도구를 빌드하고 실행하면 INTFACE의 올바른 설정이 무엇인지 알 수 있습니다. 또한 TRANSCOMM 설정이 올바른지 확인해야합니다. xtc_CsameF77 및 xtc_UseMpich 도구를 사용할 수 있습니다.

INTFACE 및 TRANSCOMM 값을 계산 한 후에는 BLACS를 다시 작성하고 make 명령 행에서 설정하십시오. 그런 다음 동일한 옵션을 사용하여 테스트를 다시 작성하십시오.