2012-04-27 5 views
2

이 HP-UX 11.31 (IA64)에서는 long 및 time_t 유형이 4 바이트 크기임을 알게됩니다. 왜 그런지 물어봐도 될까요?HP-UX 11.31 (IA64)을 64 비트로 지원하는 모든 방법이 있습니다. time_t

내 환경 :

$ uname -a 
HP-UX bdev1 B.11.31 U ia64 0999202893 unlimited-user license 

$ cat /usr/include/sys/_time_t.h 
...... 
# ifndef _TIME_T 
# define _TIME_T 
# ifdef _KERNEL 
typedef int32_t time_t; 
# else /* !_KERNEL */ 
_NAMESPACE_STD_START 
typedef long time_t; 
_NAMESPACE_STD_END 
# endif /* !_KERNEL */ 
# endif /* _TIME_T */ 

내 코드 :

$ cat sizeof.cpp 

#include <iostream> 
#include <ctime> 

#define PRINT_SIZE(a) \ 
     std::cout << #a << ": " << sizeof(a) << std::endl 

int main(void) 
{ 
     PRINT_SIZE(long); 
     PRINT_SIZE(time_t); 
     return 0; 
} 

$ aCC sizeof.cpp 

$ ./a.out 
long: 4 
time_t: 4 

누구는 ACC에 의해 64 비트 time_t를 만드는 방법을 찾아 도와 수 있을까?

답변

3

g ++이 HP-UX 시스템에서 32 비트 코드를 출력하기로 결정한 이유는 무엇입니까? 당신은 너무처럼 -mlp64 flag와 빌드 환경을 변경할 수 있습니다

$ g++ -Wall -mlp64 sizeof.cpp 

당신이 aCC, you use +DD64를 사용하는 경우 :

$ aCC +DD64 sizeof.cpp 

HP-UX 11i v2 용 개체 형식이 ELF, 당신 때문에 + DD64 옵션을 사용하여 LP64 코드를 생성 할 수 있습니다. (source)

+0

니스, 작동합니다. – van

+0

직장에서 aCC를 사용한다는 점을 잊지 않도록 유감스럽게 생각합니다. 문제는 aCC를 사용하여 문제를 해결하는 방법입니다. 내 질문을 다시 써. – van

+0

그 경우'+ DD64 '가 작동합니까? – user7116