Little Endian & Big Endian
- struct 의 경우 variable의 bit order 변경 뿐 아니라 variable의 순서도 바뀌게 된다. 따라서 아래와 같이 little endian에서 작성된 struct는 big endian machine 에서 역순으로 기술되어야 한다.
AIX
- 속도적인 이슈로 인하여 char로 선언한 경우 default로 unsigned char로 동작한다. xlc Compile Option 중 하나인 -qchar=signed 를 사용하여 gcc등의 다른 컴파일러와 같이 signed char로 동작하게 바꿀 수 있다.
- 아래와 같은 에러가 발생한 경우 runtime 라이브러리 버전이 문제일 수 있다. xlC runtime 버전을 6.0.0.0 에서 8.0.0.0 으로 업데이트 진행하면 해결될 수 있다.
관련링크 : IBM developerworks
HP UX
- memory allocation 시 64bit의 경우 8byte, 32bit의 경우 4byte 단위로 alignment 를 잘 맞추어서 할당해야 한다. 구조체 생성시에도 padding 용 변수를 두어 alignment를 맞춘다. 아래 메시지는 memory alignment가 맞지 않은 경우 발생한 에러메시지의 일부를 발췌한 것이다.
- memory allocation 부분에서 segfault 가 발생한 경우
- gdb example
- 원인 : 하나의 프로세스가 할당 가능한 데이터 세그먼트 합계를 지정하는 kernel parameter 값(maxdsiz, maxdsiz_64bit)이 작아 프로그램이 더이상 메모리를 할당하지 못하고 죽음
- kernel parameter 확인 방법
- 실제 물리 메모리 사이즈 확인 방법 (How to check Physical memory in HP-UX)
- kernel parameter 확인 방법
- 해결 : root 권한을 이용해 해당 kernel parameter 값을 증가시킨 후 (32비트 : 2G , 64비트 : 64G로 설정하였음) 재부팅
- gdb example
'Programming > C & C++' 카테고리의 다른 글
자주 접하는 오류문들 (0) | 2023.05.09 |
---|---|
C++ Errors (0) | 2014.11.05 |
Tips for C++ compiling Issues (0) | 2013.07.31 |
MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __stat64i32이(가) LIBCMTD.lib(stati32.obj)에 이미 정의되어 있습니다. (0) | 2012.11.29 |
shell.c(332) : error C2440: '=' : 'void *'에서 'char *'(으)로 변환할 수 없습니다. 'void*'에서 'void'가 아닌 포인터로 변환하려면 명시적 캐스트가 필요합니다. (0) | 2012.08.28 |
댓글