2012-04-27 9 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を使用している場合:あなたはHP-UX 11i v2のオブジェクト形式はELFです

$ aCC +DD64 sizeof.cpp 

ので、 + DD64オプションを使用してLP64コードを生成できます。 source

+0

ニース、それは動作します。 – van

+0

私は職場でaCCを使用していることを忘れてしまいました。ですから問題はaCCを使ってそれを解決する方法です。私は自分の質問を再編集する。 – van

+0

その場合、 '+ DD64'は動作しますか? – user7116