2012-01-27 3 views
1

autotools와 함께 openMP를 사용하는 것에 관한 인터넷상의 정보를 찾을 수 없어요! AC_OPENMP 및 AX_OPENMP와 같은 매크로에 대한 모호한 참조를 발견했습니다. 어느 것도 작동하지 않습니다. AC_OPENMP는 "정의되지 않은 매크로 오류"를 발생시킵니다. AX_OPENMP는 autoconf를 지나치게되지만, configure가 AX_OPENMP가 정의되지 않았다는 불평을하게합니다. 이러한 매크로는 openMP를 확인하고 OPENMP_CFLAGS를 적절한 값으로 설정해야한다는 것을 알고 있습니다.autoconf 및 automake에서 OpenMP 검사 및 플래그를 활성화하십시오.

내 Makefile.am에 오버플로되어 있어도 OpenMP에서 올바르게 작동하는 foo_CXXFLAGS (C++ 프로젝트)를 얻을 수 없습니다. Makefile.am에 수동으로 foo_CXXFLAGS = -fopenmp을 설정하면, -fopenmp 플래그가 오브젝트 파일을 함께 결합하는 (링크) 단계를 제외하고 모든 컴파일 명령에 추가됩니다. 물론 정의되지 않은 참조 오류가 발생합니다. 이것은 내 오해 일 수 있습니다. AM_CXXFLAGS = -fopenmp을 설정하는 것이 가장 좋은 방법은 아닙니다. 사실 둘 다 확인하지 않고 foo_CXXFLAGS를 설정하고 있지만 제대로 작동하지 않는 것 같습니다.

제발, 누구 도와 줄 수 있습니까? 이것은 웹상에서 문서화를해야한다는 단순하고 일반적인 작업처럼 보입니다. 몇 가지를 명확히하기 위해, 코드를 수동으로 컴파일하면 코드가 잘 컴파일되며 오류없이 실행됩니다. 상황이 엉망이되는 것은이 자동 생산 단계에서만입니다. autoconf와 함께 openMP를 사용하는 방법에 대한 문서를 나에게 가르쳐 줄 수 있다면, 내 가장 좋은 친구가 될 것이다. 감사.

Autoconf의 버전 2.59, automake는 버전 "정의되지 않은 매크로 오류"에 대한 귀하의 첫 번째 질문에 관해서는 1.9.6

+1

AX_는 외부 매크로의 네임 스페이스입니다. 'AX_OPENMP'를 정의하고 싶다면, 그것을 다운로드하여 m4 디렉토리에 포함시켜야합니다. – ptomato

답변

4

AC_OPENMP 2.62에서 autoconf를 추가했다, 그래서 당신은 업그레이드해야합니다. 두 번째 질문에 관해서는 링크 타임에 플래그를 추가하고 싶다면 AM_LDFLAGS

+2

AM_LDFLAGS에 플래그를 추가 할 필요가 없습니다. 'AC_LANG (C++); AC_PROG_CXX; AC_OPENMP; AC_SUBST (AM_CXXFLAGS, "$ OPENMP_CXXFLAGS ")'를 사용하십시오. 이렇게하면 컴파일과 링크 명령 모두에'-fopenmp'가 삽입됩니다. –

0

나는 늦은 것으로 알고있다. 그러나이 대답은 같은 문제가있는 사람에게 도움이 될 것이다.

나는 Automake와 함께 libtiff와 ​​OpenMP를 함께 사용하려고 노력 중이다. 다음의 내용은 src/Makefile.am (libtiff 무시)의 트릭입니다 :

foo_CFLAGS += $(LIBTIFF_CFLAGS) -fopenmp 
foo_LDFLAGS = -fopenmp 
foo_LDADD = $(LIBTIFF_LIBS)