2013-03-15 2 views
1

우리 소스 코드에는 많은 수의 독립 실행 형 정적 템플릿 함수가 있습니다. AIX 7.1 Power 7 시스템에서 IBM 고유의 xlc++ 컴파일러로 컴파일해야합니다. 독립 실행 형 함수에 static 키워드를 사용하면 쓸모없는 연습이며 xlc++에 의해 지원되지 않으므로 내 프로그램을 컴파일하려면 함수 선언에서 해당 키워드를 제거해야합니다. 프로그램이 성공적으로 컴파일 된 후 첫 번째 실행이 중단되었습니다 (Linux/g++에서 동일한 입력 데이터로 완벽하게 안정적입니다).AIX 7.1 xlC++에서 정적 템플릿 함수 컴파일

dbx으로 디버깅하려했지만 디버거가 internal errorsegmentation fault in extend_brk에 대해 불평했습니다. 메모리 할당량이 사용되지 않으므로 메모리/디스크 공간 부족이 아닙니다. 시스템은 -g 옵션으로 컴파일 된 전체 코어 덤프, 프로그램을 작성하도록 구성됩니다. 모든 라이브러리는 정적으로 링크되므로 공유 라이브러리에서 예외를 던지는데 문제가되지 않습니다. 1) static 키워드를 제거하지 않고 xlc++에 정적 템플릿 함수를 컴파일 할 수 있습니까? 그렇다면 모든 코드가 RHEL 시스템과 동일 할 수 있습니까? 2) 왜 디버거가 작동하지 않습니까?

답변

0

나는이 상황에서 정적 키워드를 제거하는 것이 32/64 비트 이식성 문제를 안고있는 것처럼 보입니다. 내가 같이 .kshrc 파일에 다음 줄을 추가 한 후 문제는 멀리 갔다 기본적으로

export OBJECT_MODE=64 

는 IBM XL 컴파일러는 32 비트 모드에서 실행, 심지어 64 비트 AIX 7.1 시스템에서. 프로그래머는 기본 동작을 덮어 쓰려면 컴파일러에 환경 변수 또는 -q64 매개 변수를 설정할 수 있습니다.